原则2:删除带有额外数据的关系


Doctrine2: Removing a relation with extra data

我有两个具有ManyToMany关系的表。我需要向这个关系添加一些额外的字段,所以我创建了一个新的实体,它与两个表中的每个表都有ManyToOne关系。我遇到的问题是删除关系实体。我不想删除这两个表中的任何一个,我只想删除关系。我为建立相关实体所做的工作在这里大致描述如下:

Doctrine2:在引用表中使用额外列处理多对多的最佳方法

为了删除关系,我尝试从另外两个表条目中的每个表条目中删除相关元素,然后在相关实体中将对这些表的引用设置为null。这似乎不起作用;Doctrine尝试执行查询以更新相关表中的条目,并将两个外键都设置为null。如果所有对它的引用都已删除,我希望它能删除相关表中的条目。

如果你想看看我的实体,或者这是否有足够的意义,请告诉我。

实际上,删除充当"联接表"的实体就可以了。任何东西都不应该级联。

所以假设你有一个像这样的关系

User <- UserGroup -> Group

您只需要删除UserGroup实体。

如果删除了UserGroup,并且正确设置了级联持久化操作,那么UserGroup也将继续。也可以使用orphanRemoval来避免将UserGroup分配给不同的UserGroup元素。