以前、LaravelでTraits(トレイト)を利用してスコープの追加(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。
- Original:https://minory.org/laravel-withoutglobalscope.html
- Source:Minory
- Author:管理者