PHP/Elixirエンジニアのブログ

有益なアウトプットを心がけます。

【Laravel】グローバルスコープ

bootメソッドについて

処理の組み込みはモデルが作成される際の初期化処理として実行します。
これは__constructなど使用しません。
「boot」というモデルの初期化専用メソッドを用います。

bootメソッドの基本
protected static function boot()
{
    parent::boot;
   ・・・初期化処理・・・
}

これは静的メソッドです。
モデルインスタンス自身($this)を
利用する処理は書けません。
どうやってグローバルスコープの
処理を用意するかというと
「addGlobalScope」という静的メソッドを使うのです。

protected static function boot()
{
    parent::boot;
    
    static::addGlobalScope(スコープ名, function, (Builder $builder))
    {
       ・・・絞り込み処理・・・
    });
}

addGlobalScopeはその名の通り
グローバルスコープを追加するメソッドです。
これをオーバーライドすることで
グローバルスコープを追加できます。

このメソッドでは第1引数にスコープの名前を、
第2引数にクロージャを用意しています。
このクロージャはBuildeがインスタンス
引数として渡されます。