Symfony / Doctrine:" Soft update"如果某个字段已更改

时间:2016-07-14 22:04:42

标签: doctrine symfony

我知道您可以在Doctrine中进行软删除(即不删除记录,而是添加"删除"值)。这是一个扩展。

现在我想知道是否可以通过软件更新"一个记录。我的意思是不是实际更新记录而是创建新记录并使旧记录无效。在与软删除相同的扩展名中,有一个函数loggable,但是这个函数会记录到另一个表中。

  • 我可以创建一个控制器,而不是更新软删除 (并因此使旧记录无效),然后创建一个新记录 与新的价值观。但我不确定这是不是一个好习惯。

  • 也许我应该在对象本身上创建这个动作?但是我 不确定如何做到这一点。

修改

我已经查看了Versionable和EntityAudit(正如Tomas所建议的那样),但似乎这些捆绑包做得太多了。我只想检查给定字段是否与旧字段不同,如果不是:软删除旧字段(我使用softDeleteable,这样一个简单的remove()就可以了);然后使用更改的值创建一个新的。

理想情况下,它会隐藏在阴影中,直到执行更新。然后从映射配置中读取需要监视的字段,如果这些字段确实与持久存在的字段不同,则程序应执行remove()persist()命令。

1 个答案:

答案 0 :(得分:1)

此扩展程序可能适合您的使用案例:

它会记录您要跟踪的所有更改。 因此,修改它以满足您的需求应该非常容易。