symfony - 集合字段更改(添加或删除)时不会触发 LifeCycleCallback
问题描述
我正在使用 Symfony3.4,当我更新 Vente Entity 的实例时,我有两种情况:
如果我至少更新一个简单字段,例如 (date,int,string,etc...) => 回调“ PreUpdateCallback ”被触发
当我通过添加/删除/更新一行来仅更新集合$ elementsVente => 回调“ PreUpdateCallback ”不会被触发
那么,这是怎么回事,是否有解决此问题的解决方案。
谢谢。
发泄实体
/**
* Vente
*
* @ORM\Table(name="vente")
* @ORM\Entity(repositoryClass="AppBundle\Repository\VenteRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Vente
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
*/
private $date;
/**
* @var \Doctrine\Common\Collections\Collection
* @Assert2\ElementVente()
*
* @ORM\OneToMany(targetEntity="ElementVente", mappedBy="vente", cascade={"persist", "remove"}, orphanRemoval=TRUE)
*/
private $elementsVente;
//...
/*
* @ORM\PreUpdate
*/
public function preUpdateCallback()
{
die('fired');
}
}
解决方案
PreUpdate
生命周期事件由Doctrine 的组件触发。UnitOfWork
从代码中可以看出 - 它是在executeUpdates
负责更新单个实体的方法内部触发的。因此,此事件意味着用于实体本身,与集合更改无关。
推荐阅读
- python - Matplotlib 流图不同颜色
- angular - 值不会在视图中更新
- cypress - 赛普拉斯:等待不可预知的组件从专有集合中渲染?
- android - 如何在多行 TextView 的末尾添加可点击的 ImageView?
- bytecode - CPU如何执行解释语言代码?
- graphql - 数据未合并,Apollo 3 分页与字段策略
- python - Matplotlib 动画
- android - 在喷气背包导航中处理 backstack
- android - Android Webview 中的密码管理器
- thingsboard - postgreSQL-12:有没有办法启用 FIFO 来限制数据库表的存储容量?