我知道您可以在Doctrine中进行软删除(即不删除记录,而是添加"删除"值)。这是一个扩展。
现在我想知道是否可以通过软件更新"一个记录。我的意思是不是实际更新记录而是创建新记录并使旧记录无效。在与软删除相同的扩展名中,有一个函数loggable
,但是这个函数会记录到另一个表中。
我可以创建一个控制器,而不是更新软删除 (并因此使旧记录无效),然后创建一个新记录 与新的价值观。但我不确定这是不是一个好习惯。
也许我应该在对象本身上创建这个动作?但是我 不确定如何做到这一点。
我已经查看了Versionable和EntityAudit(正如Tomas所建议的那样),但似乎这些捆绑包做得太多了。我只想检查给定字段是否与旧字段不同,如果不是:软删除旧字段(我使用softDeleteable,这样一个简单的remove()
就可以了);然后使用更改的值创建一个新的。
理想情况下,它会隐藏在阴影中,直到执行更新。然后从映射配置中读取需要监视的字段,如果这些字段确实与持久存在的字段不同,则程序应执行remove()
和persist()
命令。