Maison >base de données >tutoriel mysql >Comment puis-je transmettre des variables aux fermetures Where avancées de Laravel ?

Comment puis-je transmettre des variables aux fermetures Where avancées de Laravel ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 22:04:12164parcourir

How Can I Pass Variables to Laravel's Advanced Where Closures?

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!

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