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

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

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

いつもひよこのたまごをご利用下さいましてありがとうございます!
おかげ様でチュートリアル数も10ゲーム目となりました!
チュートリアル一覧は
こちら からどうぞ!


スポンサーリンク

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"の記事だけが表示されました!

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