前提
Presidentモデル(社長) 1人 に対して
Shopモデル(お店) 複数 が紐づいている状態
Laravelの関連テーブルのカラムで検索したい。
社長の名前に田
がつくお店一覧を出したい場合はこれ
return Shop::with('president')
->select('*', 'presidents.name as president_name', 'shops.name as shop_name')
->leftJoin('presidents', 'presidents.id', '=', 'president_id')
->where('presidents.name', 'LIKE', '%' . 田 . '%')
->groupBy('presidents.id');
解説
お店にも、社長にも name
というカラムがある。
joinするとnameカラムが社長の名前で上書きされてしまう。
なので select as
を使って別の名前に最初に定義し直す。
->select('*', 'presidents.name as president_name', 'shops.name as shop_name')