2016-12-01 2 views
0

Ich mache eine Suchfunktion, wo Benutzer einen Namen eingeben können. Dies ist die Abfrage im tut:Suche mit Beziehung - Laravel 5.3

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

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

     return $results; 
    } 

Welche dieser hits:

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

Ich muss auch zusammen mit dieser Abfrage 'Standort' suchen, das Problem ist, es ist in einer diffrent Tabelle. Der Name des Modells lautet Standort. Meine Frage ist, wie würde ich den Modellstandort an diese Abfrage anhängen?

So ideal, würde ich wollen, dass diese für die Abfrage tun:

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

By the way, in Ihrem '$ query' zu tun, es ist nicht 'request() -> get ('query);', sollte das sein: '$ request-> get (' query);' – GabMic

+0

nein, ich könnte es so benutzen. – David

+0

Ich weiß, Sie können, aber Sie instanziieren die Anfrage, also warum nicht verwenden? sag nur. – GabMic

Antwort

1

Für die Suche Sie searchable Merkmal verwenden können. so können Sie dies tun:

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

, wenn es eine Beziehung zwischen Angebot und die Lage ist, können Sie Laravel realations verwenden so etwas wie dieses

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