ローカルスコープ

ローカルスコープとは

再利用性の高いクエリ制約を定義できる

ローカルスコープの利用方法

①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'));

用途

検索フォーム機能でよく使える
共通のクエリ機能を作っておきたい場合など