2017-01-19 19 views
2

私は2つのテーブルが町と都市に関連しています。 (町belongsToの市、市hasManyのタウン)関連テーブルのLaravel multiple search

町のテーブル: ID、名前が、

都市テーブルをCITY_ID: ID、オートコンプリートAJAXクエリの名前

、私は、SQLクエリによって結果を得ることができますこのような。

Select t.id AS townid, t.name AS townname, c.name AS cityname FROM towns t 
left join cities c ON t.city_id=c.id 
where t.name like '%ana%' OR c.name like '%ana%'; 

私は結果が欲しいと思っています。しかし、ララベルで私はそれを達成できませんでした。 町では検索できますが、都市名でも検索することはできません。

$towns= DB::table('towns') 
    ->join('cities', 'cities.id', '=', 'towns.city_id') 
    ->select('towns.id as townid', 'towns.name as towname', 'cities.name as cityname') 
    ->where('towname', 'like', '%ana%') 
    ->orWhere('cityname', 'like', '%ana%') 
    ->get(); 

答えて

0

トライコード()あなたが町で検索することができないので、参加しないだろう。

同じクエリを実行するには、適切なlaravel joinを使用する必要があります。

だから、のようなもの:

$towns = App\Town::leftJoin('cities', 'towns.city_id', '=', 'cities.id') 
->where('towns.name', 'like', '%ana%')->orWhere('cities.name', 'like', '%ana%')->get(); 

しかし、この例では、選択されているかどうか確認してください。選択するフィールドを指定することもできます(select('towns.id', 'towns.name', ...))。

0

Laravel Elequent以下

$towns = App\Town::with('city')->where('name', 'like', '%ana%')->get(); 
関連する問題