Heim >Backend-Entwicklung >PHP-Tutorial >Tutorial zur Overlay-Chain-Aufrufmethode des Laravel Query Builder

Tutorial zur Overlay-Chain-Aufrufmethode des Laravel Query Builder

小云云
小云云Original
2017-12-13 10:02:542223Durchsuche

Dieser Artikel stellt Ihnen hauptsächlich die relevanten Informationen zum Aufruf der Query Builder-Overlay-Kette anhand von Beispielcode vor. Ich hoffe, dass dies der Fall ist Hilfe an alle.

Einführung in den Abfrage-Builder

Der Laravel-Abfrage-Builder bietet eine praktische und flüssige Schnittstelle zum Einrichten und Ausführen der Datenbanksuchsyntax.

Verwendung der PDO-Parameterbindung, um Anwendungen vor SQL-Injection zu schützen. Daher müssen die eingehenden Parameter nicht mit Sonderzeichen

maskiert werden, was grundsätzlich alle Datenbankoperationen erfüllen und auf allen unterstützten Datenbanksystemen ausgeführt werden kann

Einführung

Heute Ich möchte Ihnen einen kleinen Trick des Laravel-Abfragekonstruktors vorstellen. Er wird in den offiziellen Dokumentbeispielen nicht ausführlich erwähnt und ist möglicherweise keine High-End-Fähigkeit kann einen Blick darauf werfen.

Im Geschäftscode werden Abfragen häufig auf der Grundlage verschiedener Bedingungen durchgeführt. Als einfaches Beispiel möchten wir nun die Benutzerliste abfragen, die in umgekehrter chronologischer Reihenfolge angeordnet ist, und Status und Typ können als qualifizierende Bedingungen verwendet werden.

Zuerst habe ich es so geschrieben


 if($status && $type) {
 $users = User::where('status', $status)->where('type', $type)->latest()->get();
 } else if ($status) {
 $users = User::where('status', $status)->latest()->get(); 
 } else if ($type) {
 $users = User::where('status', $type)->latest()->get();
 } else {
 $users = User::latest()->get(); 
 }


Dieser Code ist wirklich hässlich, viel öffentlich Code wie ->latest()->get(), viermal geschrieben. Wenn das Produkt sagt, dass wir es heute in der richtigen Reihenfolge sortieren möchten, müssen Sie vier Stellen ändern. Obwohl es mit Hilfe eines Editors schnell geändert werden kann, müssen Sie wissen, dass dies nur das einfachste Beispiel ist.

Nach dem Lesen des Dokuments gibt es eine Methode zur bedingten Beurteilung. Eine Reihe von Abschlüssen sind nicht ideal. Ich war fest davon überzeugt, dass es einen eleganteren Weg geben muss, es zu schreiben, also suchte ich nach Stackoverflow, und tatsächlich gab mir der allmächtige Waiguoren die Antwort.

Verbessertes Schreiben:


 $query = User::query();
 // 如果用DB: $query = DB::table('user'); 
 if ($status) {
  $query->where('status', $status);
 }
 if ($type) {
  $query->where('type', $type);
 } 
 $users = $query->latest()->get();


Verwenden Sie eine Variable, um die Abfrage-Builder-Instanz zu speichern, und fügen Sie sie dann hinzu dazu Überlagern Sie die Einschränkungen und erhalten Sie schließlich den Satz. Der öffentliche Teil steht am Anfang und am Ende und die Struktur ist klar. Handelt es sich um eine Entscheidung?

Und wir können $query auch als Parameter an eine Methode oder Funktion übergeben und so gemeinsame Logik zusammenfassen, um mehrere Aufrufe zu ermöglichen:


 function foo($query) {
  $query->with(['girl', 'gay'])
    ->latest()
    ->get();
 } 
 $query = User::query();
 $users = foo($query);


Bei dieser Schreibweise gibt es einen Vorbehalt: Sobald Sie where und andere Einschränkungsmethoden für $query aufrufen, muss die Abfrage im Voraus geändert werden.

Zum Beispiel möchten wir Benutzer vom Typ 1 und 2 gleichzeitig bekommen


 $query_1 = User::query();
 $query_2 = clone $query_1; 
 $users_1 = $query_1->where('type', 1)->latest()->get();
 $users_2 = $query_2->where('type', 2)->latest()->get();
 // 错误 $users_2 = $query_1->where('type', 1)->latest()->get();
 // 这样写得到得是type = 1 and $type = 2


laravel Obwohl es in der Dokumentation kein solches Beispiel gibt, wird es erwähnt:

Sie können die Tabellenmethode der DB-Fassade verwenden, um die Abfrage zu starten. Die Tabellenmethode gibt eine Abfrage-Builder-Instanz für die Abfragetabelle zurück, sodass Sie beim Abfragen weitere Einschränkungen verketten und die get-Methode verwenden können, um das Endergebnis zu erhalten.

Verwandte Empfehlungen:

7 empfohlene Artikel über Abfragekonstruktoren

Laravel-Lernen – Datenbankoperationen und Abfragekonstruktion Beispielcode-Sharing des Builders

Wie der Abfragekonstruktor von ThinkPHP5 funktioniert

Das obige ist der detaillierte Inhalt vonTutorial zur Overlay-Chain-Aufrufmethode des Laravel Query Builder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn