Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich mehrere WHERE-Klauseln in Laravel Eloquent effizient erstellen?
Beim Erstellen von Datenbankabfragen in Laravel Eloquent kann es vorkommen, dass Sie mehrere Bedingungen mithilfe der Where-Klausel angeben müssen . Während die Kaskadierung mehrerer Where-Aufrufe ein gängiger Ansatz ist, gibt es elegantere Alternativen, die in Betracht gezogen werden sollten.
Laravel bietet einen prägnanteren Weg So geben Sie mehrere Where-Bedingungen mithilfe eines Arrays an:
$query->where([ ['column_1', '=', 'value_1'], ['column_2', '<>', 'value_2'], // ... ]);
Mit diesem Ansatz können Sie mehrere Where-Klauseln in einer einzigen Funktion gruppieren Aufruf.
Vor Laravel 5.3 konnten Sie ein Array verwenden, um mehrere Where-Bedingungen anzugeben, wenn sie alle denselben Operator verwendeten (normalerweise „und“ ):
$matchThese = ['field' => 'value', 'another_field' => 'another_value']; $results = User::where($matchThese)->get();
Diese Methode generiert eine ähnliche Abfrage um:
SELECT * FROM users WHERE field = value AND another_field = another_value
Wenn Sie komplexere Kriterien benötigen, können Sie Unterabfragen in Ihren where-Klauseln verwenden:
$subquery = User::where(...)->select('id')->where(...); $results = User::whereIn('id', $subquery)->get();
In diesem Beispiel gibt die Unterabfrage eine Reihe von IDs zurück, die bestimmte Kriterien erfüllen, die dann zum Filtern der Hauptabfrage verwendet werden Abfrage.
Betrachten Sie zur Veranschaulichung die folgende Abfrage, die Benutzer mit bestimmten Bedingungen abruft:
$results = User::where('active', 1) ->where('verified', 1) ->where('country', 'United States') ->get();
Mit den oben genannten alternativen Ansätzen kann die Abfrage erfolgen geschrieben als:
// Array-based where (Laravel 5.3 and later) $conditions = [ ['active', '=', 1], ['verified', '=', 1], ['country', '=', 'United States'], ]; $results = User::where($conditions)->get(); // Array method (prior to Laravel 5.3) $matchThese = ['active' => 1, 'verified' => 1, 'country' => 'United States']; $results = User::where($matchThese)->get();
Durch die Nutzung dieser Techniken können Sie prägnantere und lesbarere Abfragen erstellen und so die Wartbarkeit Ihrer Abfragen verbessern Code.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere WHERE-Klauseln in Laravel Eloquent effizient erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!