0

我对 Symfony 中的 PreUpdate LifecycleCallbacks 有一点问题。

我有一个与实体产品有 OneToMany 关系的实体用户。

class User{
     /**
     * @ORM\OneToMany(targetEntity="Product", mappedBy="formulario", cascade={"persist", "remove"})
     */
    private $products;
}

class Product{
     /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="products")
     * @ORM\JoinColumn(name="user", referencedColumnName="id")
     */
    private $user;
}

我的问题是当我向用户添加或删除产品时。当这发生时,我想启动一个 PreUpdate 函数来对用户实体进行一些更改。但是从用户更改实体产品时不会触发 PreUpdate。

非常感谢!!!

4

2 回答 2

2

不允许使用 preUpdate 侦听器更改相关实体。

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

...从文档中。

于 2013-07-23T15:28:01.267 回答
0

我遇到了同样的问题,我通过更新 $user 解决了这个问题,preUpdate()然后安排了一个额外的更新:

    $args->getEntityManager()->getUnitOfWork()->scheduleExtraUpdate($user, array(
        'field_name' => array($oldValue, $newValue)
    ));
于 2014-04-05T21:44:37.213 回答