2016-12-01 97 views
0

我正在製作搜索功能,用戶可以輸入一個名字。這是查詢即時通訊做:用關係搜索 - 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); 
    } 

我還需要與該查詢一起搜索「位置」,問題是它在不同勢表。模型名稱是位置。我的問題是如何將模型位置附加到此查詢?

那麼理想,我希望爲查詢做到這一點:

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

順便說一句,在你的'$ query',它不是'request() - > get('query);',它應該是這樣的:'$ request-> get('query);' – GabMic

+0

不,我可以這樣使用它。 – David

+0

我知道你可以,但你正在實例化請求,那麼爲什麼不使用它?只是說。 – GabMic

回答

1

對於搜索,您可以使用searchable特質。所以你可以這樣做:

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

如果有資訊和位置之間的關係,你可以使用Laravel realations做這樣的事情

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