/** * Accessor to parent relations. * * @param {?AbstractModel|int|string|array} $parents If provided, add them as parents in relation. * @param {?string} $collection Collection identifier for the relation, defaults to the model's collection name. * * @return {array} Existing parents before modification. */ protected function parents($collection = null, $parents = null, $replace = false) { if ($collection === null) { $collection = $this->collectionName(); } $return = Relation::getParents($this->identity(), $collection); if ($parents) { if ($replace) { $this->deleteAncestors($collection); } if (!is_array($parents)) { $parents = array($parents); } foreach ($parents as $parent) { if ($parent instanceof AbstractModel) { $parent = $parent->identity(); } Relation::set($parent, $this->identity(), $collection); } } return $return; }