カテゴリ: Laravel 更新日: 2025/11/04

Laravelのモデルイベント(creating, updating)を使う方法

Laravelのモデルイベント(creating, updating)を使う方法
Laravelのモデルイベント(creating, updating)を使う方法

先生と生徒の会話形式で理解しよう

生徒

「Laravelでデータを保存するときに、自動で値を設定したりチェックしたりする方法ってありますか?」

先生

「はい、それにはEloquentのモデルイベントを使うと便利です。例えばcreatingupdatingといったイベントがあります。」

生徒

「モデルイベントって何ですか?」

先生

「モデルイベントとは、モデルがデータベースに保存される前後など、特定のタイミングで自動的に処理を行う仕組みです。データが作られる前に値を加工したり、更新される前にチェックしたりできます。」

生徒

「なるほど、具体的にはどうやって使うんですか?」

先生

「では、基本的な使い方を順に見ていきましょう。」

1. creatingイベントで保存前に処理する

1. creatingイベントで保存前に処理する
1. creatingイベントで保存前に処理する

例えば、ユーザー登録時に自動でUUIDを設定したい場合、creatingイベントを使うと便利です。


namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class User extends Model
{
    protected static function booted()
    {
        static::creating(function ($user) {
            $user->uuid = (string) Str::uuid();
        });
    }
}

この例では、ユーザーを作成する直前にuuidフィールドに自動でUUIDを設定しています。bootedメソッド内でイベントを登録することがポイントです。

2. updatingイベントで更新前に処理する

2. updatingイベントで更新前に処理する
2. updatingイベントで更新前に処理する

データを更新するときに、自動でタイムスタンプを設定したい場合はupdatingイベントを使います。


protected static function booted()
{
    static::updating(function ($user) {
        $user->updated_by = auth()->id();
    });
}

ここでは、ユーザー情報が更新される前に、updated_byフィールドに現在ログインしているユーザーのIDを自動で設定しています。

3. イベントを使うメリット

3. イベントを使うメリット
3. イベントを使うメリット

モデルイベントを使うことで、コントローラやサービスクラスに同じ処理を書かずに済み、コードがすっきりします。また、データの一貫性や自動化も簡単に実現できます。

例えば、全てのユーザー登録にUUIDを設定したり、全ての更新操作に更新者IDを記録したりする処理を一箇所にまとめて書けます。これにより、ミスを減らし、保守性の高いアプリケーションが作れます。

4. 注意点とポイント

4. 注意点とポイント
4. 注意点とポイント

モデルイベントは自動で呼ばれるため、コントローラ側で重複して同じ処理を書かないように注意しましょう。また、creatingupdatingは保存前のイベントなので、データベースに反映される前に値を加工できます。

イベントには他にもcreatedupdatedなど、保存後に処理するタイプもあります。まずはcreatingupdatingを覚えて、データ保存前の自動処理を実装できるようになることが大切です。

この仕組みを理解することで、Laravelで効率的にデータ管理ができ、アプリケーションの信頼性を高めることができます。

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)