我想将Eloquent模型中all
个字段的更改存储到数据库中。
我可以使用created
和updated
事件来执行此操作,但multiple
外部关系存在问题(描述为单独的表)。
示例:
User
login
Roles -> hasMany
当我更新登录字段时,很容易将旧值和新值写入数据库,但是当我更新Roles关系时没有任何反应。
如何跟踪所有外交关系(如hasMany,hasManyThrough,ManyToMany)?
答案 0 :(得分:2)
Owen-it有一个名为laravel-auditing的非常好的库,它可以轻松查询对模型所做的所有更改的查询列表,我认为它确实非常棒。使用它,值得尝试。
答案 1 :(得分:1)
没有嵌入式和简单的方法来做到这一点 Eloquent没有提供任何方法来通过设计在相关模型上实现观察者。泰勒(just one example)以这种方式拒绝了许多提案。
你唯一能做的就是创建自己的方法来做到这一点。 你有很多可能性,这里有一些是复杂的(其中一些是"脏" :-)
created
和updated
观察者save()
或在您的eloquent实例上创建自己的saveAndFire()
方法,并从该方法检索父级并在保存之前调用其日志方法。 (这是一点点"脏" imho)