2016-11-24 5 views
2

Ich versuche, nach mehreren Modellen zu suchen. Ich habe das Routen- und HTML-Formular eingerichtet und erhalte erfolgreich die Daten in meinem Controller. Jetzt möchte ich mehrere Spalten abfragen und das Ergebnis als eloquent oder Array erhalten.Suche mit Laravel

Was ist der richtige Weg, um dies zu erreichen?

public function search(Request $request) { 
    $searchTerm = $request->search; 

    // I want to search.. 
    Content::where('value', '%' . $searchTerm . '%')->get(); 
    BlogPost::where('value', '%' . $searchTerm . '%')->get(); 
    // etc.. 
} 
+0

Können Sie Semikolon Ende dieser Zeile '$ search = $ request-> Suche hinzufügen;' ? –

Antwort

2

Fügen Sie zuerst like zu den Abfragen hinzu. Dann, wenn Sie ein Array möchten, verwenden Sie toArray() Methode und array_merge() Ergebnisse zu fusionieren:

$result1 = Content::where('value', 'like', '%'.$searchTerm.'%')->get()->toArray(); 
$result2 = BlogPost::where('value', 'like', '%'.$searchTerm.'%')->get()->toArray(); 
$result = array_merge($result1, $result2); 

Wenn Sie eine Sammlung erhalten möchten, nur die Daten erhalten und verschmelzen sie mit merge() Helfer.

+0

Vielen Dank. Ich habe eine Frage. Ich habe versucht, '{{$ result}}' zu verwenden, aber ich kann es mit dieser Methode nicht bekommen. Was ist der richtige Weg, um es zu erreichen? Auch mit 'merge()' anstelle von 'array_merge()' wirft mich 'Aufruf zu undefinierter Funktion App \ Http \ Controllers \ merge()' – senty

+1

@senty hier '$ Ergebnis ist ein Array oder eine Sammlung, so dass Sie brauchen um es mit 'foreach ($ result als $ oneRow) 'zu iterieren und dann die Daten innerhalb der Schleife mit' {{$ oneRow-> value}} 'zu bekommen. Sie können die Struktur von '$ result 'betrachten, indem Sie' {{dd ($ result)}} 'in die Ansicht einfügen. –

0

Sie nur die Ergebnisse in eine Variable?

public function search(Request $request) { 
    $searchTerm = $request->search 

    // I want to search.. 
    $contents = Content::where('column', '%' . $searchTerm . '%')->get(); 
    $blogs = BlogPost::where('column', '%' . $searchTerm . '%')->get(); 
    // etc.. 
} 
+0

Gibt es eine andere Frage mit @senty? Ich habe nur Spalte und Wert gesehen. –