サイトアイコン IT NEWS

Laravelで追加したスコープ(addGlobalScope)を外す方法

laravel-withoutglobalscope

以前、LaravelTraitsトレイト)を利用してスコープの追加(addGlobalScope())をご紹介した記事を覚えているでしょうか?
単純な会員制のCRUDなら良いのですが、自分自身が登録したものしか表示されないので、会員が作成したものを全体に公開するような場合は、データベースから取得する際に普段のクエリ1ワード加えます。

withoutGlobalScope()

実を言うと、以前の記事内で紹介していた参考サイトに書いてありました。
単純に私が忘れてただけですね…。

スコープを外す場合は、以下のようにwithoutGlobalScope()を追記します。

User::withoutGlobalScope('[追加したスコープ名]')->get();

例えば、このようにスコープ追加している場合は、

static::addGlobalScope('mine', function(Builder $builder) {
    $builder->where('user_id', auth()->id());
});

こうすることで、user_idを検索対象から外してデータを取得することができます。

User::withoutGlobalScopes('mine')->get();

ああ、便利なLaravel

モバイルバージョンを終了