cascade={"persist"} • $entityManager->flush() для новых сущностей в связях при cascade= {"persist"} • $entityManager->merge($entity) • $unitOfWork->computeChangeSet($classMetadata, $entity) для новых сущностей в связях при cascade={"persist"} • На этом этапе в сущностях нету идентификатора • Изменения связей в подписчике не учитываются
Имеет доступ ко всем изменениям foreach ($uow->getScheduledEntityInsertions() as $entity) {} foreach ($uow->getScheduledEntityUpdates() as $entity) {} foreach ($uow->getScheduledEntityDeletions() as $entity) {} foreach ($uow->getScheduledCollectionDeletions() as $collection) {} foreach ($uow->getScheduledCollectionUpdates() as $collection) {}
их changeSet $unitOfWork->computeChangeSet($classMetadata, $entity) • Изменения в связанных сущностях нужно пересчитывать $unitOfWork->recomputeSingleEntityChangeSet($classMetadata, $entity) • Если changeSets пустые будет вызван даже с пустым changeSet
только с помощью Doctrine\ORM\Event\PreUpdateEventArgs $args->setNewValue('field', 'value') • $entityManager->persist($entity) или $entityManager->remove($entity) даже с использованием $unitOfWork могут привести к unexpected behavior • Не разрешается менять сущности в связях
маппингов и создании Doctrine\ORM\Mapping\ClassMetadataInfo на их основании • Doctrine\ORM\Events::Doctrine\ORM\Events:: onClassMetadataNotFound ◦ Если данные для сущности не найдены, можно добавить fallback
public function getEntity() ◦ public function getEntityManager() ◦ public function getObject() ◦ public function getObjectManager() • Doctrine\ORM\Event\OnClassMetadataNotFoundEventArgs ◦ public function setFoundMetadata(ClassMetadata $classMetadata = null) ◦ public function getFoundMetadata() ◦ public function getClassName()
• Doctrine\ORM\Event\OnClearEventArgs ◦ public function getEntityClass() ◦ public function clearsAllEntities() • Doctrine\ORM\Event\PreUpdateEventArgs ◦ public function getEntityChangeSet() ◦ public function hasChangedField($field) ◦ public function getOldValue($field) ◦ public function getNewValue($field) ◦ public function setNewValue($field, $value)