ローカルスコープとは?
簡単に説明するとローカルスコープとは、SQLのよく使う取得条件をあらかじめ定義しておいて再利用できる機能のことです。
$posts = Post::query()
->select('title', 'body')
->where('status', 1)
->get();
上記のコードではwhere句
を使ってstatus
が1
のデータを取得しています。この取得条件が他のところでも複数必要であれば、何回もこのwhere句
を記述することになります。そんな時に使えるのがローカルスコープです。
モデルファイルにこのように記述します。
public function scopeOnlyOpen($query)
{
$query->where('status', 1);
}
メソッド名の先頭にscope
を付けます。
そして、、
$posts = Post::query()
->select('title', 'body')
->onlyOpen()
->get();
このように記述することによって利用することができます。
where('status', 1)
の部分がonlyOpen()
に置き換わってスッキリしました!何回も同じ取得条件を記述しているときはscope
の機能を利用してみてください!