人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravel で データベース更新時にフックをかけて自動的に処理を行う。

● Laravel で データベース更新時にフックをかけて自動的に処理を行う。

Laravelではフックというとても便利な機能があります。
これはデータベースのデータに更新や削除などデータ操作があった際に好きな 処理を挟み込むことができます。
またトレイトも使用できますのでコントローラーから分離することもできます。

● 公式マニュアル

https://laravel.com/docs/5.8/eloquent#events

● 日本語公式マニュアル

(イベント)の項目を参照
https://readouble.com/laravel/5.8/ja/eloquent.html

● Traitを使ったフックの使用

一番簡単な Trait を使ったフックを紹介します。

・1. まずトレイトを作成します

/app/WebApiTrait.php

<?php
namespace App;
trait WebApiTrait
{
    public static function bootWebApiTrait()
    {
       static::created(function ($model) {
            dd( 'created hook', $model );
        });

       static::updated(function ($model) {
            dd( 'updated hook', $model );
        });

       static::deleted(function ($model) {
            dd( 'deleted hook', $model );
        });
    }
}

・2. フックをかけたいモデルから呼び出します。

Userモデルに追加してみましょう

<?php
namespace App;
use App\Notifications\UserResetPassword;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
    // ===== Trait フック(この行を追加) =====
    use WebApiTrait;
    // ===== / Trait フック(この行を追加) =====

これだけです。
これだけでDBデータに「新規登録」「更新(実際にデータ更新があった時)」「削除」
の時に dd(); が動いて、ダンプして停止します。
実際のロジックはdd() を書き換えればいいでしょう。

No.1573
08/19 16:03

edit