Eventlistener preUpdate嵌入式表单

时间:2013-07-23 14:30:58

标签: symfony event-listener symfony-2.2

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

1 个答案:

答案 0 :(得分:3)

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

  

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

     

永远不允许对更新后的实体的关联进行更改   这个事件,因为Doctrine无法保证正确处理   刷新操作此时的参照完整性。

请参阅documentation