Doctrine,哪个事件应该用于改变相关领域的变化?

时间:2015-10-09 13:38:09

标签: doctrine-orm

Doctrine有preUpdate事件。但是在代码中,代码只能更改已经更改的字段。

因此,如果用户只更改了字段地址,则代码无法更新其他字段,例如纬度和经度。

甚至可以使用哪种其他学说来实现这种功能?

1 个答案:

答案 0 :(得分:1)

onFlush可能就是你想要的。

http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/events.html#onflush

在回调中,您可以确定地址是否已更改,然后相应地设置纬度/经度。请特别注意$ unitOfWork-> recomputeSingleEntityChangeSet($ classMetadata,$ entity)的要求。

一种不需要进入工作单元的更简单的方法就是使用preFlush事件。在这种情况下,您必须向实体添加某种标志以确定地址是否已更改。这可能是一种痛苦但却避免了工作单位。