1

我的嵌入式表单中的 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) 改变。

4

1 回答 1

3

您无法在 preUpdate 侦听器中更新相关实体

PreUpdate 是使用最严格的事件,因为它是在 EntityManager#flush() 方法中的实体调用更新语句之前调用的。

在这种情况下,永远不允许对更新实体的关联进行更改,因为 Doctrine 不能保证在刷新操作的此时正确处理引用完整性。

请参阅文档

于 2013-07-23T15:24:40.677 回答