如何在Laravel 5.4中存储Elount模型所有更改的日志?

如何在Laravel 5.4中存储Elount模型所有更改的日志?,laravel,Laravel,我想将对Eloquent模型中所有字段的更改存储到数据库中 我可以使用创建的和更新的事件来完成,但是多个对外关系(描述为单独的表)存在问题 例如: User login Roles -> hasMany 当我更新登录字段时,很容易将新旧值写入数据库,但当我更新角色关系时,什么也没发生 如何跟踪所有的对外关系(如hasMany、hasManyThrough、ManyToMany)?没有嵌入式的简单方法来跟踪。 Eloquent没有提供任何方法通过设计在相关模型上实现观察器。

我想将对Eloquent模型中所有字段的更改存储到数据库中

我可以使用
创建的
更新的
事件来完成,但是
多个
对外关系(描述为单独的表)存在问题

例如:

User
    login
    Roles -> hasMany
当我更新登录字段时,很容易将新旧值写入数据库,但当我更新角色关系时,什么也没发生


如何跟踪所有的对外关系(如hasMany、hasManyThrough、ManyToMany)?

没有嵌入式的简单方法来跟踪。
Eloquent没有提供任何方法通过设计在相关模型上实现观察器。泰勒()拒绝了许多这样的提议

你唯一能做的就是创建自己的方法。 您有许多可能性,以下是按复杂性顺序排列的一些可能性(其中一些是“脏的”:-)

  • 在每个相关模型上添加一个创建的和更新的观察者
  • 在有说服力的实例上重写
    save()
    或创建自己的
    saveAndFire()
    方法,并在保存前从该方法检索父对象并调用其日志方法。(这是一个有点“脏”的imho)
  • 封装所有持久性层并在保存对象时自己触发事件(例如,查看存储库模式)

没有嵌入式的简单方法可以做到这一点。
Eloquent没有提供任何方法通过设计在相关模型上实现观察器。泰勒()拒绝了许多这样的提议

你唯一能做的就是创建自己的方法。 您有许多可能性,以下是按复杂性顺序排列的一些可能性(其中一些是“脏的”:-)

  • 在每个相关模型上添加一个创建的和更新的观察者
  • 在有说服力的实例上重写
    save()
    或创建自己的
    saveAndFire()
    方法,并在保存前从该方法检索父对象并调用其日志方法。(这是一个有点“脏”的imho)
  • 封装所有持久性层并在保存对象时自己触发事件(例如,查看存储库模式)

Owen它有一个非常好的库,名为,它保存了一个易于查询的列表,列出了对模型所做的所有更改,我认为它做的工作相当出色。Owen它有一个非常好的库,名为Owen,它保存了一个易于查询的列表,其中列出了对模型所做的所有更改,我认为这是一项非常了不起的工作。您已经使用过它,值得尝试。

您想要像版本控制一样存储实际更改,还是只存储字段更改的时间?您想要像版本控制一样存储实际更改,还是只存储字段更改的时间?