概要
Laravelアプリケーションにおいて、検索機能等を実装する際にリレーション先も含めてOR(または)で絞り込みを行う方法をまとめる。
環境
- Laravel 9
方法
orWhereHas()
を使用する。
$qury->where('title', '%{$keyword}%') // 通常の絞り込み ->orWhere('body', '%{$keyword}%') // 通常のOR絞り込み // 第2引数にリレーション先の絞り込み条件を指定するクロージャーを取る ->orWhereHas('categories', function($q) use ($keyword) { $q->where('name', '%{$keyword}%'); })->get();