从表中查询列外键的地方

时间:2016-12-31 16:11:00

标签: mysql laravel laravel-5 laravel-5.3

我有表格列表和城市,列表有一个城市的关系。 有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))

有什么想法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我认为whereHas就是您所需要的。

假设您的关系被称为“城市”:

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