级联删除不会触发PostRemove

时间:2015-07-16 02:04:16

标签: php symfony doctrine-orm doctrine

我的实体如下:

  • a Portfolio有许多系列[OneToMany-ManyToOne]
  • 意甲有很多资产[OneToMany-ManyToOne]
  • 意甲可以拥有资产(作为缩略图)[OneToOne]

我还使用了 cascade = {" remove"} 属性,以便在相应的投资组合被删除时删除系列和资产。

意甲

/**
 * Serie
 *
 * @ORM\Table(name="serie")
 * @ORM\HasLifecycleCallbacks
 */
class Serie
{
    /**
     * @var \Portfolio
     *
     * @ORM\ManyToOne(targetEntity="Portfolio", inversedBy="series")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="portfolio", referencedColumnName="id")
     * })
     */
    private $portfolio;
    /**
     * @var \Image
     *
     * @ORM\OneToOne(targetEntity="Image")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="preview", referencedColumnName="id", nullable=true, onDelete="SET NULL")
     * })
     */
    private $preview;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\OneToMany(targetEntity="Asset", mappedBy="serie", cascade={"remove"})
     **/
    private $assets;

    /**
     * @ORM\PostRemove
     */
    public function removeDirectory(){ 
        rmdir(...);
    }

资产

/**
 * @ORM\Table(name="asset")
 * @ORM\HasLifecycleCallbacks
 */
class Asset
{
    /**
     * @var \Serie
     *
     * @ORM\ManyToOne(targetEntity="Serie", inversedBy="assets")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="serie", referencedColumnName="id")
     * })
     */
    protected $serie;

    /**
     * @ORM\PostRemove()
     */
    public function removeFile()
    {
        unlink($this->filename);
    }

我在关系because the other way around would result in a foreign key constraint error.的资产方面放了级联= {"删除"} 属性

Serie中的postRemove方法被调用,但不是Asset中的方法。我做错了什么,有没有办法解决它?

0 个答案:

没有答案