Doctrine:on persist:仅当对象发生变化时才进行软删除

时间:2016-07-17 16:46:24

标签: doctrine symfony

在Doctrine / Symfony3中,我如何最好地检查是否要更改记录以删除/创建新记录而不是更新?

背景信息:每次供应商发送一个大型价目表csv时,我都会将其加载到数据库中。重要的是,更新的价格不会反映在先前下达的订单中。当然,每次上传列表时我都可以软删除所有对象,并创建新的对象,但这会使数据库不必要地变大,并且需要不必要的调用。

因此,我想软删除一个对象并仅在它被更改时创建一个新对象。

1 个答案:

答案 0 :(得分:0)

我理解您要求的工作流程为:

  • 如果实体已更改
  • 软删除
  • 使用新值创建新记录

您需要执行两个步骤

1)使用https://github.com/simplethings/EntityAudit在变更时创建新对象

2)添加侦听prePersist(或preFlush / preUpdate的EventSubscriber;选择最适合您的那个),并使用上述包中的类似过程(寻找{ {1}} / xxxSubscriber)软删除它。