首页 > 解决方案 > 集合字段更改(添加或删除)时不会触发 LifeCycleCallback

问题描述

我正在使用 Symfony3.4,当我更新 Vente Entity 的实例时,我有两种情况:

那么,这是怎么回事,是否有解决此问题的解决方案。

谢谢。

发泄实体

/**
 * 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');
 }
}

标签: symfonydoctrine-ormdoctrinesymfony-3.4

解决方案


PreUpdate生命周期事件由Doctrine 的组件触发。UnitOfWork从代码中可以看出 - 它是在executeUpdates负责更新单个实体的方法内部触发的。因此,此事件意味着用于实体本身,与集合更改无关。


推荐阅读