2012-07-15 29 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