2016-12-31 84 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);