我试图提供一种方法来跟踪用户对我的应用程序中的备注部分的模型进行更改。例如。约翰去修改2个字段,将会创建一个音符,说约翰已将'我的标题1'改为title
,''我的标题2'和content
从'Lipsum'改为'Lipsum2'。尝试挂钩到具有特征的模型“更新”事件
这是一个特点,我创建:
<?php
namespace App\Traits;
use Illuminate\Database\Eloquent\Model;
trait TrackChanges
{
public $changes;
public static function bootChangesTrait()
{
static::updating(function($model)
{
$this->changes = [];
foreach($model->getDirty() as $key => $value)
{
$original = $model->getOriginal($key);
$this->changes[$key] = [
'old' => $original,
'new' => $value,
];
}
});
}
}
而且我使用的特质成功地在我的模型。但是,我不确定如何捕获更改的内容,或者它们是否正确工作。
在我的控制,我有:
$site = Site::findOrFail($id);
// Catch and cast the is_active checkbox if it's been unselected
if (! $request->exists('is_active'))
{
$request->request->add([ 'is_active' => 0 ]);
}
// // Get rid of the CSRF field & method
$data = $request->except([ '_token', '_method' ]);
$site->update($data);
我之前和之后$site->update($data);
尝试dd($site->changes)
,但它只是返回null
。
我在做什么错?
谢谢!这完美的作品! – Mark