Maison >base de données >tutoriel mysql >Comment puis-je transmettre des variables aux fermetures Where avancées de Laravel ?
Passer des variables dans les fermetures Where avancées de Laravel
Les fonctions Where avancées de Laravel fournissent des moyens puissants de filtrer vos requêtes. Cependant, vous pouvez rencontrer des situations dans lesquelles vous devez transmettre des variables externes dans la fermeture utilisée dans la fonction Where.
Exemple de scénario
Supposons que vous souhaitiez utiliser une variable externe , tel que $searchQuery, dans votre fermeture Where :
->where('city_id', '=', $this->city->id) ->where(function($query) { $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%') })
Utiliser le mot clé Solution
Vous pouvez transmettre les variables nécessaires dans la fermeture à l'aide du mot-clé use :
DB::table('users')->where(function ($query) use ($searchQuery) { $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%') })->get();
Fonction flèche PHP 7.4 (mise à jour)
Dans PHP 7.4 et versions ultérieures, vous pouvez utiliser les fonctions fléchées pour un rendu plus concis syntaxe :
DB::table('users')->where(fn($query) => $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'))->get();
Contrairement aux fonctions anonymes classiques, les fonctions fléchées capturent automatiquement les variables de la portée parent et n'autorisent pas la liste explicite via l'utilisation. Cependant, ils doivent avoir une seule instruction return et ne peuvent pas contenir plusieurs lignes de code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!