/** * Obdela spremembe inverznih M:N kolekcij */ protected function processInverseCollections() { foreach ($this->collections as $collection) { $mapping = $collection->getMapping(); // zapišemo spremembe inverznih kolekcij M:N if ($mapping['type'] >= 8 && $this->isCollectionTracked($collection)) { $entity = $collection->getOwner(); $inverseField = $mapping['inversedBy']; foreach ($collection->getInsertDiff() as $inverseEntity) { if (!$this->uow->isScheduledForInsert($inverseEntity)) { $this->addCollectionChange($inverseEntity, 'UPD', $inverseField, '+', $entity); } } foreach ($collection->getDeleteDiff() as $inverseEntity) { if (!$this->uow->isScheduledForInsert($inverseEntity)) { $this->addCollectionChange($inverseEntity, 'UPD', $inverseField, '-', $entity); } } } } }
/** * Determines whether an entity instance is managed in this EntityManager. * * @param object $entity * @return boolean TRUE if this EntityManager currently manages the given entity, FALSE otherwise. */ public function contains($entity) { return $this->_unitOfWork->isScheduledForInsert($entity) || $this->_unitOfWork->isInIdentityMap($entity) && !$this->_unitOfWork->isScheduledForDelete($entity); }