【发布时间】:2014-10-20 07:42:24
【问题描述】:
以上两个选项有什么区别?什么时候最好选择每个选项?
【问题讨论】:
标签: symfony doctrine cascade cascading-deletes
以上两个选项有什么区别?什么时候最好选择每个选项?
【问题讨论】:
标签: symfony doctrine cascade cascading-deletes
它们的基本区别是:
当使用 orphanRemoval=true 选项时,Doctrine 做出假设 实体是私有的,不会被其他人重用 实体。如果您忽略此假设,您的实体将获得 即使您将孤立实体分配给 Doctrine,也会被 Doctrine 删除 另一个。
假设您的 User 与 Comment 具有 一对多 关系。如果您使用的是cascade="remove",您可以从一个User 中删除对Comment 的引用,然后附加该Comment 到另一个 User。当您持久保存它们时,它们将被正确保存。但是如果您使用orphanRemoval=true,即使您将从一个User 中删除给定的Comment,然后附加到另一个User,因为引用已被删除,所以在persist期间将删除此评论。
【讨论】: