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
Susan SarandonOriginal
2024-12-24 20:34:10800Durchsuche

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();

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.'%')

})

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();

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

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

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!

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