PHP/Elixirエンジニアのブログ

有益なアウトプットを心がけます。

【Laravel】モデルのスコープ

Laravelに搭載されてるデータベース操作機能で
DBクラス,クエリビルダよりも
扱いやすいのが*Eloquent**。
その中から「モデルのスコープ」について
まとめていきます。

モデルのスコープとは

スコープという言葉は一般的には
全体の中でどこからどこまでの範囲かを特定するものです。
今回のモデルのスコープというのは、
モデルの範囲を特定するものです。

検索条件が
・年齢が20歳以上
・性別が女性
・今月登録した人
だとすれば、
あらかじめモデルに「こういう条件のもと」といった
スコープを設定するメソッドを用意しておき
それを利用して細かな条件を設定した検索を
わかりやすく行えるようにできます。

このスコープには大きく分けて
「ローカルスコープ」と
「グローバルスコープ」があります。

ローカルスコープ

ローカルスコープは単純に
「検索条件を設定してBuilderを返すメソッド」を用意し
それを呼び出すというものです。
メソッドを呼び出して利用すればその機能が適用される。
whereを実行してBuilderを返すメソッドと同じです。

グローバルスコープ

モデル処理を用意すると
そのモデルのすべてのレコード取得にスコープが適用される。
グローバルメソッドとは違い
専用のbootメソッドを設定する。