Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Laravel】Eloquentのグローバルスコープで検索機能実装!

PHPバージョン:7.1.14
Laravelバージョン:5.7.9

前回はローカルスコープ検索についてでした!
今回はもうひとつのスコープ、
グローバルスコープについてです!
そのモデルを使う際に必ず適用されるスコープです!


モデルにグローバルスコープ作成

Articleモデルにグローバルスコープを作成していきます。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
// ***** 開始 *****
use Illuminate\Database\Eloquent\Builder;
// ***** 終了 *****

class Article extends Model
{
    protected $guarded = ['id'];
// ***** 開始 *****
    protected static function boot() {
        parent::boot();

        static::addGlobalScope('category_laravel_only', function (Builder $builder) {
            $builder->where('category', 'Laravel');
        });
    }
// ***** 終了 *****
}

app>Models>Articles.php

グローバルスコープを使うとコントローラー等に別途記述することなく
全てのモデルデータに検索条件をかけることができます。
今回はカテゴリーを"Laravel"に限定したグローバルスコープを作成しました。

グローバルスコープはModelクラスに用意されている
bootというモデル初期化用メソッド内に、
静的メソッドの"addGlobalScope"メソッドを利用して実現します。
第一引数にscope名、第二引数に無名関数を指定します。
無名関数内にBuilderクラスを利用するので、
Builderクラスのuse宣言を忘れないように注意して下さい。

結果

これだけでグローバルスコープは機能します。

http:// localhost:8000/articles/
こちらにアクセスし、記事一覧を表示します。

f:id:hiyotama:20181116182027p:plain

無事、カテゴリーが "Laravel"の記事だけが表示されました!

今回はここまでです、ありがとうございました〜!