是否有任何方法可以从Doctrine2事件中检测实体以前的集合值?
在EventSubscriber中,我可以从getEntityChangeSet()
中获取以前的实体值,但getScheduledCollectionUpdates()
在修改后总是返回当前集合
例如:
function postPersist(LifecycleEventArgs $args) {
$entity = $args->getEntity();
$entityManager = $args->getObjectManager();
$uow = $entityManager->getUnitOfWork();
$changeset = $uow->getEntityChangeSet($entity);
$collectionUpdates = $uow->getScheduledCollectionUpdates();
// ...
}
postPersist
事件是在您的更改被持久化到数据库后激发的,因此很明显,在持久化后将不再计划任何更改(因此在postPersist
上,这将是空的)。
如果要捕获计划的/挂起的更新,则应使用prePersist
事件。