2012-07-15 66 views
0

我有两个具有ManyToMany关系的表。我需要为这个关系添加一些额外的字段,所以我创建了一个与这两个表中的每一个具有ManyToOne关系的新实体。我遇到的问题是删除关系实体。我不想删除两个表中的任何一个条目,我只是想删除关系。我做了什么来建立与实体相当多描述如下:Doctrine2:删除与额外数据的关系

Doctrine2: Best way to handle many-to-many with extra columns in reference table

要删除的关系,我试着从每个其他两个表项的移除相关元素,然后在相关实体中将这些表的引用设置为空。这似乎并不奏效; Doctrine试图执行查询来更新相关表中的条目,并将两个外键都设置为空。我希望它删除相关表中的条目,如果所有对它的引用都被删除了。

让我知道你是否希望看到我的实体,或者它是否足够有意义。

回答

0

实际上,删除充当“连接表”的实体是不可能的。 没有东西应该级联。

因此,假如你有一个像

User <- UserGroup -> Group 

你只需要删除UserGroup实体的关系。

如果您删除UserGroup,并且已经正确设置了cascade persist operations,那么UserGroup也会去。您还可以使用orphanRemoval来避免将UserGroup分配给不同的UserGroup元素。

+0

是的,我只需要在连接表上调用em-> remove()。工作很好。感谢您的回答,并了解我的问题:) – Cully 2012-07-23 20:15:27