【Laravel】データ保存時に created_by, updated_by, delete_by を自動的に追加する方法
Laravelでデータ保存時に created_by
, updated_by
, delete_by
の登録者、更新者、削除者を自動的に追加する方法
サンプル
boot
メソッドに各イベント時の動作を設定します。
creating
, updating
, saving
, deleting
のイベント時に設定されています。
ただ1つ問題があり softDelete
の動作です。
softDelete
は delete
実行時に deleted_at
だけを更新するようになっています。
そのため deleting
に関しては $model->update()
をして明示的に更新を行う必要があります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| <?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
class SampleModel extends Model
{
public static function boot(): void
{
parent::boot();
static::creating(function ($model) {
$model->created_by = Auth::user()->id ?? null;
});
static::updating(function ($model) {
$model->updated_by = Auth::user()->id ?? null;
});
static::saving(function ($model) {
$model->updated_by = Auth::user()->id ?? null;
});
static::deleting(function ($model) {
$model->deleted_by = Auth::user()->id ?? null;
$model->update();
});
}
}
|
メモ
Observerでやる方法もあります。
How to automaticly update updated_by, created_by fields using Eloquent?
参考