我有一个用户实体,我想在禁止时将其存档。我有以下preUpdate
监听器:
/**
* @ORM\PreUpdate
*/
public function preUpdate(PreUpdateEventArgs $eventArgs) {
if ($eventArgs->hasChangedField('banned') {
$this->setIsArchived(true);
}
if ($eventArgs->hasChangedField('isArchived')) {
/* do Special work here */
}
}
如何通知eventArgs
处理程序本身内部更改的字段?
答案 0 :(得分:1)
如果您在eventArgs中编辑实体,我认为您需要保留它,然后在UnitOfWork中运行computeChangeSet或computeChangeSets,以便您使用hasChangedField:
$entity = $eventArgs->getObject();
$em = $eventArgs->getObjectManager();
$uow = $em->getUnitOfWork();
if ($eventArgs->hasChangedField('banned') {
$entity->setIsArchived(true);
$em->persist($entity);
}
$uow->computeChangeSets();
if ($eventArgs->hasChangedField('isArchived')) {
/* do Special work here */
}