Heim > Datenbank > MySQL-Tutorial > Wie kann ich Variablen an Laravel Advanced Where-Abschlüsse übergeben?

Wie kann ich Variablen an Laravel Advanced Where-Abschlüsse übergeben?

Susan Sarandon
Freigeben: 2024-12-24 20:34:10
Original
710 Leute haben es durchsucht

How Can I Pass Variables into Laravel Advanced Where Closures?

Übergabe von Variablen an Laravel Advanced Where-Abschlüsse

Die Laravel-Dokumentation bietet ein Beispiel für die Verwendung von whereExists mit einem Abschluss zum Verknüpfen von Tabellen:

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

Aber was ist, wenn Sie eine externe Variable in den Abschluss übergeben müssen, beispielsweise eine Suche? query?

->where('city_id', '=', $this->city->id)
->where(function($query)
{
    $query->where('name', 'LIKE', '%'.$searchQuery.'%')
    ->orWhere('address', 'LIKE', '%'.$searchQuery.'%')

})
Nach dem Login kopieren

Die aktuelle Lösung besteht darin, eine neue Eigenschaft zu erstellen und mit $this darauf zuzugreifen, aber gibt es eine bequemere Möglichkeit?

Ja, Sie können dafür das Schlüsselwort use verwenden Übergeben Sie Variablen aus dem übergeordneten Bereich in den Abschluss:

DB::table('users')->where(function ($query) use ($activated) {
    $query->where('activated', '=', $activated);
})
->get();
Nach dem Login kopieren

In PHP 7.4 können Sie die kürzere Pfeilfunktion verwenden Syntax:

DB::table('users')->where(fn($query) => $query->where('activated', '=', $activated))
->get();
Nach dem Login kopieren

Hauptunterschiede zwischen Pfeilfunktionen und regulären Verschlüssen:

  • fn-Schlüsselwort statt Funktion
  • Variablen werden automatisch aus dem übergeordneten Bereich erfasst
  • Pfeilfunktionen geben immer einen Wert zurück
  • Das Rückgabeschlüsselwort muss lauten weggelassen
  • Pfeilfunktionen müssen einen einzelnen Ausdruck als Rückgabeanweisung haben

Das obige ist der detaillierte Inhalt vonWie kann ich Variablen an Laravel Advanced Where-Abschlüsse übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage