学说:级联="删除" vs orphanremoval = true

时间:2014-08-26 20:56:56

标签: symfony doctrine cascade cascading-deletes

上述两个选项有什么区别?什么时候最好选择每个选项?

1 个答案:

答案 0 :(得分:99)

它们之间的基本区别是:

  

当使用orphanRemoval = true选项时,Doctrine会做出假设   这些实体是私有的,不会被其他实体重复使用   实体。如果你忽略了这个假设,你的实体就会得到   即使您已将孤立实体分配给Doctrine,也会将其删除   另一个。

说明 User Comment 一对多关系。如果您使用的是cascade="remove",则可以从 Comment 中删除 User 的引用,然后附加 Comment 到另一个 User 。当你坚持他们时,他们将被正确保存。但是,如果您使用的是orphanRemoval=true,即使您要从一个 Comment 中移除给定的 User ,然后附加到另一个 User em> {{1}} ,此评论将在保留期间删除,因为该参考已被删除。

相关问题