Heim >PHP-Framework >Laravel >So erstellen Sie komplexe Abfragebedingungen in Laravel

So erstellen Sie komplexe Abfragebedingungen in Laravel

PHPz
PHPzOriginal
2023-04-21 10:03:15893Durchsuche

In Laravel ist die Erstellung komplexer Abfragebedingungen eine sehr häufige Anforderung. Manchmal müssen wir Daten abfragen, die mehrere Bedingungen gleichzeitig erfüllen, manchmal müssen wir den Maximal- oder Minimalwert eines Feldes abfragen, manchmal müssen wir Daten abfragen, die bestimmte Bedingungen nicht erfüllen usw. In diesem Artikel wird erläutert, wie Sie den Abfrage-Builder von Laravel verwenden, um diese Anforderungen zu erfüllen.

  1. Grundlegende Abfrage

Werfen wir zunächst einen Blick auf die grundlegende Abfragesyntax von Laravel. In Laravel können wir die table()-Methode der DB-Fassade verwenden, um die Tabelle anzugeben, die wir abfragen möchten, und dann die select()-Methode verwenden, um die Felder anzugeben, die wir abfragen müssen.

Zum Beispiel fragt der folgende Code alle Datensätze in der Benutzertabelle ab und gibt deren ID- und Namensfelder zurück:

DB::table('users')->select('id', 'name')->get();

Wir können auch die Methode where() verwenden, um Abfragebedingungen anzugeben. Der folgende Code fragt beispielsweise die Datensätze in der Benutzertabelle ab, die älter als 18 sind:

DB::table('users')->where('age', '>', 18)->get();
  1. Kombination von Abfragebedingungen

Wenn wir mehrere Bedingungen gleichzeitig erfüllen müssen, können wir where() verwenden Methode zum Kombinieren der Abfragebedingungen.

Zum Beispiel fragt der folgende Code die Benutzertabelle nach Datensätzen ab, die sowohl älter als 18 als auch männlich sind:

DB::table('users')->where('age', '>', 18)->where('gender', 'male')->get();

Wir können auch die Methode orWhere() verwenden, um anzugeben, dass eine der Bedingungen erfüllt ist.

Zum Beispiel fragt der folgende Code die Benutzertabelle nach Datensätzen ab, deren Alter älter als 18 Jahre ist oder deren Geschlecht männlich ist:

DB::table('users')->where('age', '>', 18)->orWhere('gender', 'male')->get();

Wenn wir eine Kombination mehrerer Bedingungen benötigen, können wir Schließungen verwenden, um dies zu erreichen.

Zum Beispiel fragt der folgende Code die Benutzertabelle nach Datensätzen ab, die die Anforderungen von Alter über 18 Jahren und Geschlecht als Mann oder Alter gleich 18 Jahren und Geschlecht als Frau erfüllen:

DB::table('users')->where(function($query) {
    $query->where('age', '>', 18)
          ->where('gender', 'male');
})->orWhere(function($query) {
    $query->where('age', '=', 18)
          ->where('gender', 'female');
})->get();
  1. Fuzzy-Abfrage

Manchmal brauchen wir sich auf einen Teil eines bestimmten Gebiets stützen, um nachzufragen. Wir können die Methode like() und Platzhalter verwenden, um Fuzzy-Abfragen zu implementieren. Der folgende Code fragt die Datensätze in der Benutzertabelle ab, deren Namen mit „J“ beginnen:

DB::table('users')->where('name', 'like', 'J%')->get();
  1. Abfrage nach Maximal- und Minimalwerten

Manchmal müssen wir den Maximal- oder Minimalwert eines bestimmten Felds abfragen. Wir können dies mit den Methoden max() und min() tun. Der folgende Code fragt die Maximal- und Minimalwerte des Altersfelds in der Benutzertabelle ab:

$maxAge = DB::table('users')->max('age');
$minAge = DB::table('users')->min('age');
  1. Not equal to query

Manchmal müssen wir Datensätze abfragen, für die ein Feld nicht einem bestimmten Wert entspricht. Um dies zu erreichen, können wir die Methode where() und das Symbol <> verwenden. Der folgende Code fragt die Datensätze in der Benutzertabelle ab, deren Geschlecht nicht männlich ist:

DB::table('users')->where('gender', '<>', 'male')->get();
  1. in und nicht in der Abfrage

Manchmal müssen wir die Datensätze eines bestimmten Felds in einer bestimmten Werteliste abfragen. Wir können dies mit der Methode whereIn() und einer Werteliste tun. Der folgende Code fragt die Datensätze in der Benutzertabelle ab, deren Altersfeldwert 18, 19 oder 20 ist:

DB::table('users')->whereIn('age', [18, 19, 20])->get();

Wir können auch die Methode whereNotIn() verwenden, um Datensätze abzufragen, die nicht in der Werteliste enthalten sind.

  1. Existenz- und Nichtexistenz-Abfrage

Manchmal müssen wir die Datensätze abfragen, ob eine bestimmte Bedingung vorliegt oder nicht. Um dies zu erreichen, können wir die Methoden whereExists() und whereNotExists() verwenden. Der folgende Code fragt die Auftragstabelle nach Datensätzen ab, die dem Benutzer entsprechen:

DB::table('orders')
    ->whereExists(function ($query) {
        $query->select(DB::raw(1))
              ->from('users')
              ->whereRaw('users.id = orders.user_id');
    })
    ->get();

Wir können auch die Methode whereNotExists() verwenden, um die Datensätze abzufragen, die für den entsprechenden Benutzer nicht vorhanden sind.

An dieser Stelle haben wir die grundlegende Methode zum Erstellen komplexer Abfragebedingungen in Laravel vorgestellt. Der Abfrage-Builder von Laravel macht es für uns einfacher und intuitiver, Abfrageanweisungen zu schreiben, ohne zu viel über die Details der SQL-Syntax nachdenken zu müssen. Natürlich ist das oben Genannte nur die Spitze des Eisbergs der Abfrageanweisungen. Es gibt viele erweiterte Einsatzmöglichkeiten des Abfrage-Builders von Laravel, die darauf warten, von uns entdeckt zu werden.

Das obige ist der detaillierte Inhalt vonSo erstellen Sie komplexe Abfragebedingungen in Laravel. 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