我試圖提供一種方法來跟蹤用戶對我的應用程序中的備註部分的模型進行更改。例如。約翰去修改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