2016-12-31 49 views
0

我有表格列表和城市,列表hasOne城市的關係。 有2個輸入,第一個輸入是查看列表名稱,第二個輸入是查看城市名稱。 列表表具有列名和city_id。 城市表有列ID和名稱。其中查詢與列外鍵的表

目標是在城市輸入中查找列表。

當前查詢這個樣子的

$listings = Listing::where('name', 'LIKE', '%'. $request->search. '%')->where('%'. $request->location. '%', 'LIKE', function($query){ 
      $query->where(DB::raw('cities.name')); 
     })->paginate(10); 

這給錯誤列不明

SQLSTATE [42S22]:在「where子句1054未知列 '%城市輸入%':列未找到'(SQL:select count(*)as listings,其中name LIKE%列表輸入%和%city input% LIKE(select * where cities.name is null))

有什麼想法解決這個問題?

回答

1

我認爲whereHas是你需要的。

假設你的關係被稱爲 「城市」:

$listings = Listing::where('name', 'LIKE', '%' . $request->search . '%') 
    ->whereHas('city', function($query) use($request) { 
     $query->where('name', 'LIKE', '%' . $request->location . '%'); 
    }) 
    ->paginate(10);