Doctrine:级联=“删除”与orphanRemoval = true

问题描述 投票:58回答:1

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

symfony doctrine cascade cascading-deletes
1个回答
106
投票

它们之间的基本区别是:

[使用orphanRemoval = true选项时,Doctrine做出了假设实体是私有的,不会被其他实体重用实体。如果您忽略此假设,您的实体将获得即使已将孤立实体分配给另一个。

说您的UserComment具有一对多]关系。如果使用的是cascade="remove",则可以从一个[Comment中删除User的引用,然后将该Comment附加到另一个User] >。当您保留它们时,它们将被正确保存。但是,如果您使用的是orphanRemoval=true,即使您从一个[Comment中删除给定的User,然后附加到另一个User,此注释也将被删除。在持续期间,因为引用已被删除。


推荐问答