上述两个选项有什么区别?什么时候最好选择每个选项?
答案 0 :(得分:99)
它们之间的基本区别是:
当使用orphanRemoval = true选项时,Doctrine会做出假设 这些实体是私有的,不会被其他实体重复使用 实体。如果你忽略了这个假设,你的实体就会得到 即使您已将孤立实体分配给Doctrine,也会将其删除 另一个。
说明 User
与 Comment
的一对多关系。如果您使用的是cascade="remove"
,则可以从 Comment
中删除 User
的引用,然后附加 Comment
到另一个 User
。当你坚持他们时,他们将被正确保存。但是,如果您使用的是orphanRemoval=true
,即使您要从一个 Comment
中移除给定的 User
,然后附加到另一个 User
em> {{1}} ,此评论将在保留期间删除,因为该参考已被删除。