我有两个具有ManyToMany关系的表。我需要为这个关系添加一些额外的字段,所以我创建了一个与两个表中的每一个都具有ManyToOne关系的新实体。我遇到的问题是删除关系实体。我不想删除两个表中任何一个表中的条目,我只是想删除这个关系。我在这里描述了如何设置相关实体:
Doctrine2: Best way to handle many-to-many with extra columns in reference table
要删除关系,我尝试从其他两个表条目中删除相关元素,然后在相关实体中将这些表的引用设置为null。这似乎不起作用; Doctrine尝试执行查询以更新相关表中的条目,并将两个外键都设置为null。如果已删除对它的所有引用,我希望它删除相关表中的条目。
如果你想看到我的实体,或者这是否足够有意义,请告诉我。
答案 0 :(得分:0)
实际上,删除充当“join-table”的实体可以解决问题。 什么都不应该级联。
假设你有像
这样的关系User <- UserGroup -> Group
您只需要删除UserGroup
实体。
如果您删除了User
或Group
,并且您已正确设置cascade persist operations,那么UserGroup
也会被删除。您还可以使用orphanRemoval
来避免将UserGroup
分配给不同的User
或Group
元素。