Ü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:
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!