Maison >base de données >tutoriel mysql >Comment transmettre des variables dans les clauses Where de Laravel Advanced ?
Dans les situations où vous devez transmettre des variables externes dans une clause Where avancée de Laravel, par exemple lors du filtrage des résultats à l'aide de paramètres définis par l'utilisateur critères de recherche, la syntaxe par défaut fournie dans la documentation peut ne pas suffire.
Heureusement, il existe une solution plus pratique utilisant l'utilisation mot-clé, qui vous permet de capturer des variables de la portée parent dans la fermeture qui définit la clause Where. Par exemple :
DB::table('users')->where(function($query) use ($searchQuery) { $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'); });
Dans cet exemple, la variable $searchQuery est transmise de la portée parent à la fermeture et peut être utilisée dans la clause Where. Le mot-clé use garantit que la variable est capturée par référence, ce qui permet d'y accéder et de la modifier dans la fermeture.
Alternativement, avec l'introduction des fonctions fléchées de PHP 7.4, vous pouvez obtenir le même résultat avec un syntaxe plus concise :
DB::table('users')->where(fn($query) => $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%'));
Les fonctions fléchées capturent automatiquement les variables de la portée parent, éliminant ainsi le besoin de les répertorier explicitement à l'aide de use. Cependant, il est important de noter que les fonctions fléchées renvoient toujours une valeur et nécessitent l'omission du mot-clé return.
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!