laravel获取数据库修改前后的值
简介
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 1804”
]
观察者模式
如果用到观察者监听数据变化,一般在数据模型观察者的 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");
}
}