为什么我不能在级联ORM端删除?

时间:2016-12-21 14:07:33

标签: symfony doctrine-orm

致电

$em->remove($news);

我遇到了约束违规错误。

我有2个实体,新闻和图片。

News我有Image的3个引用,如下所示:

/**
  * @ORM\OneToOne(targetEntity="Image", orphanRemoval=true, cascade={"persist"})
  */
  private $cover;

  /**
  * @ORM\OneToOne(targetEntity="Image", orphanRemoval=true, cascade={"persist"})
  */
  private $img;

  /**
  * @ORM\OneToMany(targetEntity="Image", mappedBy="news", orphanRemoval=true, cascade={"persist", "remove"})
  */
  private $gallery;

Image里面我只提到了新闻,就像这样:

/**
    * @var News
    *
    * @ORM\ManyToOne(targetEntity="News", inversedBy="gallery", cascade={"remove"})
    */
    private $news;

我知道我有一个constrait跑到那里但不应该cascade = {“remove”} ORM方面是因为这个原因吗?

我在这里缺少什么?如果我添加

* @ORM\JoinColumn(onDelete="CASCADE")

到manyToOne关系,它只是工作正常。我想知道是否以及如何让它成为ORM方面。

1 个答案:

答案 0 :(得分:0)

cascade={"remove"}方设置了News,就像您对$gallery关联一样。

 /**
  * @ORM\OneToMany(targetEntity="Image", mappedBy="news", orphanRemoval=true, cascade={"persist", "remove"})
  */
  private $gallery;

对其他协会也这样做。

/**
  * @ORM\OneToOne(targetEntity="Image", orphanRemoval=true, cascade={"persist", "remove"})
  */
  private $cover;

  /**
  * @ORM\OneToOne(targetEntity="Image", orphanRemoval=true, cascade={"persist", "remove"})
  */
  private $img;

  /**
  * @ORM\OneToMany(targetEntity="Image", mappedBy="news", orphanRemoval=true, cascade={"persist", "remove"})
  */
  private $gallery;