Doctrine有preUpdate事件。但是在代码中,代码只能更改已经更改的字段。
因此,如果用户只更改了字段地址,则代码无法更新其他字段,例如纬度和经度。
甚至可以使用哪种其他学说来实现这种功能?
答案 0 :(得分:1)
onFlush可能就是你想要的。
http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/events.html#onflush
在回调中,您可以确定地址是否已更改,然后相应地设置纬度/经度。请特别注意$ unitOfWork-> recomputeSingleEntityChangeSet($ classMetadata,$ entity)的要求。
一种不需要进入工作单元的更简单的方法就是使用preFlush事件。在这种情况下,您必须向实体添加某种标志以确定地址是否已更改。这可能是一种痛苦但却避免了工作单位。