5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravelのローカルスコープについて

Posted at

ローカルスコープとは?

簡単に説明するとローカルスコープとは、SQLのよく使う取得条件をあらかじめ定義しておいて再利用できる機能のことです。

$posts = Post::query()
    ->select('title', 'body')
    ->where('status', 1)
    ->get();

上記のコードではwhere句を使ってstatus1のデータを取得しています。この取得条件が他のところでも複数必要であれば、何回もこのwhere句を記述することになります。そんな時に使えるのがローカルスコープです。

モデルファイルにこのように記述します。

public function scopeOnlyOpen($query)
{
    $query->where('status', 1);
}

メソッド名の先頭にscopeを付けます。
そして、、

$posts = Post::query()
    ->select('title', 'body')
    ->onlyOpen()
    ->get();

このように記述することによって利用することができます。
where('status', 1)の部分がonlyOpen()に置き換わってスッキリしました!何回も同じ取得条件を記述しているときはscopeの機能を利用してみてください!

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?