Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Laravel-更改前后的雄辩日志记录_Mysql_Eloquent_Laravel 5.2 - Fatal编程技术网

Mysql Laravel-更改前后的雄辩日志记录

Mysql Laravel-更改前后的雄辩日志记录,mysql,eloquent,laravel-5.2,Mysql,Eloquent,Laravel 5.2,我有一个简单的问题,每当我使用Eloquent编辑数据库中的记录时,我希望能够在保存之前和之后记录此行的值 到目前为止,我的解决方案是: 我有一个扩展了Eloquent的父模型类:App\Models\model.php 然后我的所有其他模型都扩展了这个Model.php,所以在这个文件中,我覆盖了雄辩的save()方法 但是当调用save方法时,雄辩的builder对象有了新的值,旧的值已经被覆盖 关于如何执行此操作,有什么想法吗?您可以使用模型事件来执行此操作,有许多事件,如保存,更新,

我有一个简单的问题,每当我使用Eloquent编辑数据库中的记录时,我希望能够在保存之前和之后记录此行的值

到目前为止,我的解决方案是:

  • 我有一个扩展了Eloquent的父模型类:App\Models\model.php
  • 然后我的所有其他模型都扩展了这个Model.php,所以在这个文件中,我覆盖了雄辩的save()方法
但是当调用save方法时,雄辩的builder对象有了新的值,旧的值已经被覆盖


关于如何执行此操作,有什么想法吗?

您可以使用模型事件来执行此操作,有许多事件,如
保存
更新
删除
。。。欲知详情


使用现有的工具,如或甜,看起来不错!但是,如何获取用于此的原始sql?您知道吗?您需要执行的查询是什么?因此您可以使用
DB::getQueryLog()
为此,您可以使用
DB::enableQueryLog()启用它:)
class SomeModel extends Eloquent {

  protected static function boot()
  {
    parent::boot();  // don't forget to call the parent boot method
    //On saving
    static::saving(
      function($record)
      {
        $dirty = $record->getDirty();
        foreach ($dirty as $field => $newdata)
        {
          $olddata = $record->getOriginal($field);
          if ($olddata != $newdata)
          {
            // Do what it takes here :)
          }
        }
        return true;
      }
    );
  }
}