我正在尝试在我的数据库(mysql db)中记录所有更改。
我需要知道哪些字段更新了哪些表,所以经过一些研究,我遇到了getDirty()方法,但它总是返回一个空数组,下面是我的简单代码示例:

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

你知道为什么什么都不还吗?

最佳答案

这是因为你在更新数据库后调用了$article->getDirty();
您可以使用模型事件进行此操作,有许多事件,如savingupdatingdeleting。。。更多细节look here

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;
      }
    );
  }
}

关于php - Laravel 5.2 getDirty总是空数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38683960/

10-09 15:21