我在嵌入式表单中的Entitychild上有一个preUpdate Eventlistener。
我可以更改与我的实体相关的属性:
public function preUpdate(LifecycleEventArgs $eventArgs)
{
$entity = $eventArgs->getEntity();
$em = $eventArgs->getEntityManager();
if ($entity instanceof AOSupplierReference) {
if ($eventArgs->hasChangedField('amount')) {
$entity->setConfirmed(false);
}
}
}
但是现在我必须更改父实体的属性,这在我的preUpdate事件中不起作用:
$entity->getPurchaseOrder()->setStatus(4);
只有$ entity-> setConfirmed(false)更改。
答案 0 :(得分:3)
您无法更新preUpdate侦听器中的相关实体:
PreUpdate是使用最严格的事件,因为它被调用 就在为一个实体内部调用更新语句之前 EntityManager#flush()方法。
永远不允许对更新后的实体的关联进行更改 这个事件,因为Doctrine无法保证正确处理 刷新操作此时的参照完整性。
请参阅documentation。