搜索关系 - Laravel 5.3

Search with Relationship - Laravel 5.3

我正在制作一个搜索功能,用户可以在其中输入姓名。这是我正在做的查询:

   public function api(Request $request)
    {
        $query = request()->get('query');

        $results = Listing::searchAndCache($query);

        return $results;
    }

点击这个:

 public static function searchAndCache($query)
    {
        return self::where('name','like','%'.$query.'%')->where('live',true)->paginate(15);
    }

我还需要搜索 'location' 以及这个查询,问题是它在不同的地方 table。模型名称是 Location。我的问题是如何将模型位置附加到此查询?

理想情况下,我想为查询执行此操作:

 public static function searchAndCache($query)
    {
        return self::where('name','like','%'.$query.'%')->where('region','like','%'.$query.'%')->where('live',true)->paginate(15);
    }

对于搜索,您可以使用 searchable 特征。所以你可以这样做:

Listing::where('live',true)->search($query)->paginate(15);

如果列表和位置之间存在关系,您可以使用 Laravel 关系来做这样的事情

Listing::where('live',true)
         ->search($query)
         ->location
         ->search($query2)
         ->paginate(15);