2016-10-21 2 views
0

Hier ist das neueste Problem, das ich erlebt habe. Ich versuche, die Suche in meine Anwendung zu implementieren, und ich weiß, wie es geht, wenn es darum geht, Ihre Tabellen nach Stichwörtern mit where('firstname', 'LIKE', %$search%) und so zu suchen. Wie würde ich jedoch eine Suche auf der Grundlage der vom Benutzer angegebenen Kriterien eingrenzen? Suchen Sie beispielsweise nach $ keyword, aber auch nach $ city und $ pricepoint.Laravel 5.2 Suchabfrage

Ich versuche nur herauszufinden, wie die Abfrage in PHP zu strukturieren, so dass wenn Benutzer das Schlüsselwort $ angibt und die Stadt sucht, und wenn Benutzer nur das Schlüsselwort $ angibt, der Stadt Aspekt der Abfrage ist nicht hier.

Projekt ist auf Laravel 5.2 und MySQL-Datenbank gebaut. Jede Hilfe wird geschätzt.

Antwort

3

Angenommen, es gibt drei Kriterien: $ keyword, $ city und $ pricePoint. Sie tun können:

$query = DB::table('users'); 
if (!empty($keyword)) { 
    $query = $query->where('keyword', 'LIKE', '%'.$keyword.'%'); 
} 
if (!empty($city)) { 
    $query = $query->where('city', 'LIKE', '%'.$city.'%'); 
} 
if (!empty($pricePoint)) { 
    $query = $query->where('pricePoint', 'LIKE', '%'.$pricePoint.'%'); 
} 
$results = $query->get(); 

Dann können Sie natürlich, indem Sie eine Liste von Kriterien und mit einer Schleife durch sie Iterieren etwas allgemeinere machen statt mit einem anderen, wenn Bedingungen.

+0

Arbeitete wie ein Charme! Du hast mir viele weitere Stunden der Frustration erspart. – max234435

+0

Ich möchte nicht so aussehen, als würde ich zu viel verlangen, aber wissen Sie, wie man die leeren Eingabefelder nicht in die URL einfügt, wenn Sie eine get-Methode in einem Suchformular einreichen? – max234435

+1

Sie müssen JavaScript verwenden. Sie können diesen Beitrag sehen, der eine mögliche Weise gibt, es zu tun: http://www.billerickson.net/code/hide-empty-fields-get-form/ – Arkandias