JavaScriptを有効にしてください

【Laravel】データ保存時に created_by, updated_by, delete_by を自動的に追加する方法

 ·  ☕ 1 分で読めます

【Laravel】データ保存時に created_by, updated_by, delete_by を自動的に追加する方法

Laravelでデータ保存時に created_by, updated_by, delete_by の登録者、更新者、削除者を自動的に追加する方法

サンプル

boot メソッドに各イベント時の動作を設定します。
creating, updating, saving, deleting のイベント時に設定されています。

ただ1つ問題があり softDelete の動作です。
softDeletedelete 実行時に 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?

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer