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


【Laravel】DB登録で必ずuser_idを入れ、検索は自動でuser_idを含ませる方法
例えば、データベースに登録する際、どのユーザーが登録したかを記録しておきたい場合、もしくは、登録したユーザーのみ閲覧・編集・削除を可能にしたい場合などには、...
目次
withoutGlobalScope()
実を言うと、以前の記事内で紹介していた参考サイトに書いてありました。
単純に私が忘れてただけですね…。
Qiita


Eloquentに惚れちゃう便利な機能 - Qiita
1. アクセサでデータを作成 DBに存在しないアトリビュートをJSONのレスポンスで吐き出しができます。ゲッターとセッターを使うのは元々可能ですけど、アクセサで作られるア...
スコープを外す場合は、以下のようにwithoutGlobalScope()を追記します。
User::withoutGlobalScope('[追加したスコープ名]')->get();
例えば、このようにスコープ追加している場合は、
static::addGlobalScope('mine', function(Builder $builder) {
$builder->where('user_id', auth()->id());
});
こうすることで、user_idを検索対象から外してデータを取得することができます。
User::withoutGlobalScopes('mine')->get();
ああ、便利なLaravel。


コメント