Maison >base de données >tutoriel mysql >Comment transmettre des variables dans les clauses Where de Laravel Advanced ?

Comment transmettre des variables dans les clauses Where de Laravel Advanced ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-17 07:01:25841parcourir

How to Pass Variables into Laravel Advanced Where Clauses?

Passer des variables dans les clauses Where avancées de Laravel

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn