我正在构建一个订单流程,其中一个Order
对象是通过许多步骤构建的。在每一步之后,我将部分完成的Order
对象放入 . session
,并在最后一步中将其保存到数据库中。
在这些步骤中,我将其他(已经存在的)关联对象加载到我的Order
对象中(例如DiscountCoupon
)。问题是,当我将Order
其保存到session
然后在下一步中加载它时,所有关联的实体都将被分离。所以当我想把它保存到数据库时,EntityManager
抛出一个异常,要求cascade=persist
在关系上设置一个。
当然,我不需要持久化这些对象(它们已经在数据库中)。显而易见的解决方案可能是将那些关联的对象更改为合并的对象(使用EntityManager#merge
方法),但是,我有一个相当复杂的对象结构,其中包含多个级别的嵌入式实体,因此执行上述过程会相当不方便。
Doctrine 不能自动为我完成这项任务吗?因此,它可以自动合并它们,而不是“抱怨”我分离的实体。