我对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不会触发。
非常感谢!!!
答案 0 :(得分:2)
使用preUpdate侦听器不允许更改相关实体。
永远不允许对更新后的实体的关联进行更改 这个事件,因为Doctrine无法保证正确处理 刷新操作此时的参照完整性。
...来自documentation。
答案 1 :(得分:0)
我遇到了同样的问题,我通过preUpdate()
中的更新$ user解决了这个问题,然后安排了额外的更新:
$args->getEntityManager()->getUnitOfWork()->scheduleExtraUpdate($user, array(
'field_name' => array($oldValue, $newValue)
));