typo3 flow在模型上很脏

时间:2015-06-22 13:41:00

标签: flow-framework

我试图找出实体的哪些属性已被更改。 到目前为止,我已经看到,有一个PersistenceSession,它有一个方法来检查对象是否有属性isDirty。但它总是如此,因为它永远不会记录旧的对象。

因此,如果我从QuickGuide中获取演示并覆盖CoffeeBeanRepository中的update方法:

c

......它始终为TRUE(两者),尽管我没有改变任何东西。

任何人都有想法/参考如何实现这一目标? 我将它用于REST API,用户无法更新多个字段,并且在编辑某些字段时必须执行其他操作。

1 个答案:

答案 0 :(得分:0)

persistenceSession是Flow的通用持久性后端的一部分,除非您明确停用doctrine,否则既不会维护也不会真正使用。因此persistenceSession对你没有帮助,因为你注意到所有实体都被认为是persistenceSession的新实体。

使用doctrine,您需要从“UnitOfWork”中获取实体变更集,您可以从注入的\ Doctrine \ Common \ Persistence \ ObjectManager获取该变量集。另请参阅Is there a built-in way to get all of the changed/updated fields in a Doctrine 2 entity

然而,这是一个次优的解决方案,并且充其量只是一种hacky解决方案。如果您需要跟踪实体的更改,它应该是您的域模型的明确部分。例如,当给定值与当前值不同时,让您的setter记录更改的属性列表。 完成后,您甚至可以通过以下方式优化学说更改跟踪:http://doctrine-orm.readthedocs.org/en/latest/reference/change-tracking-policies.html#notify