Laravel 5.2 getDirty总是空数组

Ali*_*ssa 3 php mysql laravel eloquent

我正在尝试记录我的数据库(mysql db)的所有更改.

我需要知道更新的哪些字段以及哪些表,所以经过一些研究我遇到了这个getDirty()方法,但它总是返回一个空数组,这是我的简单代码示例:

public function update($id, Request $request)
    {
        $article = Article::findOrFail($id);
        $article->update($request->all());
        return $article->getDirty();
    }
Run Code Online (Sandbox Code Playgroud)

知道为什么没有归还吗?

Mar*_*boc 6

这是因为你$article->getDirty();在更新数据库后调用了.

您可以使用此模型的事件,也有像许多事件saving,updating,deleting...更多详情请看这里

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;
      }
    );
  }
}
Run Code Online (Sandbox Code Playgroud)