我正在使用Symfony3.4,当我更新Vente Entity的实例时,有两种情况:
如果我至少更新了一个简单字段,例如(date,int,string等...)=>会触发“ PreUpdateCallback ”回调
当我通过添加/删除/更新行来仅更新 collection $ 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');
}
}
答案 0 :(得分:2)
PreUpdate
生命周期事件是Doctrine的UnitOfWork
组件的triggered。从代码中可以看出-它是在executeUpdates
方法内部触发的,该方法负责更新单个实体。因此,此事件意味着将用于实体本身,而与集合更改无关。