Q
刪除實體
3
A
回答
8
按照Doctrine2 docs:
由於Doctrine無法保證在刷新操作的這一點上正確處理 參照完整性,所以更新實體的關聯更改不會在 此事件中被允許。
這意味着您不應該在preUpdate
事件處理期間混淆實體。我建議你通過使用實體管理器將你的邏輯轉移到服務層。寫一個更新你的實體的具體方法,並在那裏做所有複雜的東西。一個實體經理的一個很好的例子是FOSUserBundle的UserManager
2
如果您在preUpdate
事件監聽器改變一個實體,你需要告訴工作單位重新計算該實體的變更:
$em = $eventArgs->getEntityManager();
$cm = $em->getClassMetadata(get_class($entity));
$em->getUnitOfWork()->recomputeSingleEntityChangeSet($cm, $entity);
+0
我已經這樣做了。除了我正在創建和刪除一些其他實體的實體更改外,這些創建和刪除操作也不會被刷新。 – DavidW
+0
它不適用於相關的子實體。 – felipsmartins
相關問題
- 1. 刪除實體
- 2. 實體刪除
- 3. 刪除HTML實體
- 4. 從刪除實體
- 5. JPA - 刪除實體
- 6. 刪除HTML實體
- 7. 刪除父實體
- 8. 刪除父實體時未刪除子實體
- 9. 實體框架:刪除子實體
- 10. 刪除實體與另一個實體
- 11. 級聯刪除實體內的實體
- 12. 刪除實體的實體框架
- 13. 使用JPA刪除實體
- 14. 防止刪除實體
- 15. 從索引刪除實體?
- 16. 休眠:刪除實體
- 17. RIA服務實體刪除
- 18. EclipseLink刪除引用實體
- 19. 軟刪除,禁用實體
- 20. 實體刪除策略
- 21. Codeigniter刪除HTML實體
- 22. 刪除實體戰略
- 23. JPA:刪除子實體
- 24. 刪除相關實體Symfony2
- 25. JPA/Hibernate刪除「子」實體
- 26. JPA EntityManager不刪除實體
- 27. JPA /休眠刪除實體
- 28. GAE ReferencePropertyResolveError - 刪除父實體
- 29. 刪除實體框架
- 30. 刪除前更新實體
聽起來很不錯,謝謝。 – DavidW
我一直在尋找這個幾個小時,一旦我把PreUpdate代碼放入我的服務中,一切都變得簡單了。感謝這個答案,這是最好的解決方案。 –