laravel获取数据库修改前后的值

臭大佬 2019-12-11 18:45:27 2563
简介 laravel获取数据库修改前后的值

前提

使用Eloquent

获取方式

if ($article->isDirty('title')) {
    $user = Auth::user()->username;
    $oldTitle = $article->getOriginal('title'); // 原始值
    $newTitle = $article->title;                // 新值
    ActionLog::log("$user 把标题 $oldTitle 修改为 $newTitle");
}

获取修改字段

article->getDirty()可以获取修改的所有字段如下:

dd(article->getDirty());

array:2 [
“title” => “德玛西亚”
“updated_at” => “2019-12-11 18:21:04”
]

观察者模式

如果用到观察者监听数据变化,一般在数据模型观察者的 updated 方法对修改内容进行监听

/**
     * Handle the article "updated" event.
     *
     * @param \App\Models\Article $article
     * @return void
     */
    public function updated(Article $article)
    {
        if ($article->isDirty('title')) {
            $user     = Auth::user()->username;
            $oldTitle = $article->getOriginal('title'); // 原始值
            $newTitle = $article->title;                // 新值
            ActionLog::log("$user 把标题 $oldTitle 修改为 $newTitle");
        }
    }