我有表格列表和城市,列表有一个城市的关系。 有2个输入,第一个输入是查看列表的名称,第二个输入是看城市的名称。 Listings表具有列名和city_id。 Cities表具有列ID和名称。
目标是在城市输入中寻找列表。
当前查询看起来像这样
$listings = Listing::where('name', 'LIKE', '%'. $request->search. '%')->where('%'. $request->location. '%', 'LIKE', function($query){
$query->where(DB::raw('cities.name'));
})->paginate(10);
这给错误列未知
SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'%city input%'(SQL:选择count(*)作为
listings
的汇总,其中name
LIKE%列出输入%和%city input%
LIKE(选择* where cities.name为null))
有什么想法解决这个问题吗?
答案 0 :(得分:1)
我认为whereHas就是您所需要的。
假设您的关系被称为“城市”:
$listings = Listing::where('name', 'LIKE', '%' . $request->search . '%')
->whereHas('city', function($query) use($request) {
$query->where('name', 'LIKE', '%' . $request->location . '%');
})
->paginate(10);