学说:cascade =“删除”vs orphanremoval = true

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

他们之间的基本区别是:

当使用orphanRemoval = true选项时,Doctrine假定实体是私有的,不会被其他实体重用。 如果你忽略了这个假设,即使你把孤立的实体分配给另一个实体,你的实体也会被教义删除。

假设您的UserComment 一对多的关系。 如果您使用cascade="remove" ,您可以删除一个User Comment引用,然后将该Comment附加到另一个User 。 当你坚持他们,他们将被正确保存。 但是,如果您正在使用orphanRemoval=true ,即使您将从一个User删除给定的Comment ,然后附加到另一个User ,此留言将在保留期间被删除,因为该引用已被删除。