我試圖在onFlush
事件中檢測到多對多關係的更改。
如果將新實體添加到關係或更新關係(始終保留元素),我可以使用$unitOfWork->getScheduledCollectionUpdates()
檢測更改,然後檢查getInsertDiff()
或getDeleteDiff()
。到現在爲止還挺好。
問題是當我把所有的實體出來的關係:「有兩個相關的實體之前,但也有NO相關實體現在。」
當關係爲空我可以訪問$unitOfWork->getScheduledCollectionDeletions()
,但沒有辦法知道哪些實體被刪除:
getDeleteDiff()
這個集合並沒有告訴任何東西。getSnapshot()
並沒有告訴我哪些實體有
我怎麼知道採取哪些實體了許多一對多關係的前?
我添加了一個要點全面實施:一切工作正常(它可能需要一些優化),除了$uow->getScheduledCollectionDeletions()
(線101)
'$ uow-> getScheduledCollectionUpdates()'和'$ uow-> getScheduledCollectionDeletions()'都返回集合數組。而且這些集合的行爲與它們的使用位置無關。 你究竟想要完成什麼?看起來你想用「插入/刪除/刪除__」中的_entities來「做些什麼」。如果這是真的,那麼你只需要'$ uow-> getScheduledEntityInsertions()'(它將包含將被插入的_all_實體)和'$ uow-> getScheduledEntityDeletions()'(將包含將被刪除的_all_實體) 。 – 2013-03-12 19:42:45
插入/刪除的唯一其他_rows_是連接表(多對多關聯)的那些,但這些是_not_實體。 – 2013-03-12 19:43:23
我想要做的是保持COUNTER更新。你可以在Gist的代碼中看到它。基本上說:我有一個帶有相關標籤(多對多)和用戶(多對一)模型的Post模型。我不能控制的唯一情況是我刪除了Post之前的所有標籤。這個「已刪除的行/實體」應該在'$ uow-> getScheduledCollectionDeletions()'中註冊,但我找不到任何對已刪除標籤的引用。我確信解決方案非常簡單,但我無法在網上找到任何文檔... – eillarra 2013-03-13 08:14:43