2017-09-21 3 views
1

Ich habe diese beiden Tabellen mit den Namen posts und events, beide Tabellen sind überhaupt nicht verwandt und ich möchte Benutzer aus diesen beiden Tabellen mit einem einzigen Suchformular suchen können. Hier ist, was ich bisher habe:Suche Datensätze in mehreren Tabellen aus einem einzigen Suchformular

public function search(Request $request) { 
    $input = trim($request->input('q')); 
    $keywords = strtolower($input); 
    $keywordArr = explode(' ', $keywords); 

    if (!empty($keywords)) { 

     foreach($keywordArr as $key) { 
      $posts = Post::where('title', 'LIKE', '%' . $key . '%')->get(); 
      $events = Event::where('title', 'LIKE', '%' . $key . '%')->get(); 
     } 
     return view('search/results', compact('posts','events','keywords')); 
    } 
    return redirect()->back(); 
} 

Diese Methode funktioniert nicht wie erwartet. Wenn beide Tabellen über Datensätze verfügen, die mit den Keywords der Benutzer übereinstimmen, gibt diese Methode nur das Ergebnis aus der Tabelle events zurück. Wie löse ich das? das ist alles und danke!

+0

Versuchen Laravel durchsuchbare https://github.com/nicolaslopezj/searchable –

+0

will ich kein Paket verwenden, wenn möglich @HasibMahmud –

+0

'$ posts, $ events' Array sein müssen, wenn man sie nach innen' foreach setzen '. –

Antwort

0

Wenn Sie ein durchsuchbares laravel-Paket verwenden, versuchen Sie diese Methode.

Steuerungsdatei.

public function searchFunction(Request $request) 
    { 
     $result= ModelName::search($search)->get(); 
    } 

Modelldatei.

class ModelName extends Model 
{ 
    use SearchableTrait; 

    protected $searchable = [ 
     'columns' => [ 
      'posts.title' => 10, 
      'events.title' => 9 
     ] 
    ]; 
} 
+0

In Ordnung, scheint der einfachste Weg ist, dieses Paket zu verwenden. Ich habe es versucht und es funktioniert. Vielen Dank! –

0

sollten Sie prüfen Laravel Scout: https://laravel.com/docs/5.5/scout

Es würde helfen, Ihre Suche viel schneller und viel mehr relevant zu machen, um eine LIKE Abfrage mit MySQL vergleichen.

Verwandte Themen