在多对多关系中,cascade = {"删除"}究竟做了什么?

时间:2014-12-11 13:39:19

标签: symfony many-to-many cascade

我希望当且仅当文章被删除时才会删除标记并且标签没有链接到任何其他文章。
我尝试了cascade = {'删除'}但它删除了所有标签链接到我要删除的文章,即使这些标签也链接到另一篇文章。

问题
- 由于注释,有没有办法自动完成 - 如果是的话怎么样?
- 否则我应该在控制器中手动完成吗?手动看起来很奇怪,这意味着我必须为每个标签制作一个循环,并在表article_tag中检索以确定标签是否多次实现,如果没有,则执行$ em-> remove($ tag )。

ENTITY SRUCTURE
article(n)< ---->(n)标签

CODE

 // IN ARTICLE ENTITY
 /** @ORM\ManyToMany(targetEntity="Sdz\BlogBundle\Entity\Tag", inversedBy="articles", cascade={"persist","remove"})  **/
 private $tags;

 // IN TAG ENTITY 
 /** @ORM\ManyToMany(targetEntity="Sdz\BlogBundle\Entity\Article", mappedBy="tags") **/
 private $articles;

1 个答案:

答案 0 :(得分:0)

尝试orphanRemoval

/** @OneToMany(targetEntity="Address", mappedBy="contact", orphanRemoval=true) */

http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-associations.html#orphan-removal