ローカルスコープとは
再利用性の高いクエリ制約を定義できる
ローカルスコープの利用方法
①Modelにスコープメソッドを定義
検索入力値がnullでなければ、半角スペースごとに区切って、and検索用のクエリを返す
public function scopeSearch($query, $search) { if ($search !== null) { $search_split = mb_convert_kana($search, 's'); $search_split2 = preg_split('/[\s]+/', $search_split); foreach ($search_split2 as $value) { $query->where('name', 'like', '%' . $value . '%'); } return $query; } }
②作成したスコープメソッドを呼び出す
スコープを呼び出すとき、scopeプレフィックスを含めずに呼び出す
$search = $request->search; $query = ContactForm::search($search); $contacts = $query->select('id', 'name', 'title', 'created_at')->paginate(20); return view('contacts.index', compact('contacts'));
用途
検索フォーム機能でよく使える
共通のクエリ機能を作っておきたい場合など