Maison > base de données > tutoriel mysql > Comment puis-je transmettre des variables dans Laravel Advanced Where Closures ?

Comment puis-je transmettre des variables dans Laravel Advanced Where Closures ?

Susan Sarandon
Libérer: 2024-12-24 20:34:10
original
710 Les gens l'ont consulté

How Can I Pass Variables into Laravel Advanced Where Closures?

Passer des variables dans Laravel Advanced Where Closures

La documentation Laravel fournit un exemple d'utilisation de WhereExists avec une fermeture pour joindre des tables :

DB::table('users')
    ->whereExists(function($query)
    {
        $query->select(DB::raw(1))
              ->from('orders')
              ->whereRaw('orders.user_id = users.id');
    })
    ->get();
Copier après la connexion

Mais que se passe-t-il si vous devez transmettre une variable externe dans la fermeture, comme une recherche requête ?

->where('city_id', '=', $this->city->id)
->where(function($query)
{
    $query->where('name', 'LIKE', '%'.$searchQuery.'%')
    ->orWhere('address', 'LIKE', '%'.$searchQuery.'%')

})
Copier après la connexion

La solution actuelle consiste à créer une nouvelle propriété et à y accéder en utilisant $this, mais existe-t-il un moyen plus pratique ?

Oui, vous pouvez utiliser le mot-clé use pour passer les variables de la portée parent dans la fermeture :

DB::table('users')->where(function ($query) use ($activated) {
    $query->where('activated', '=', $activated);
})
->get();
Copier après la connexion

En PHP 7.4, vous pouvez utiliser la fonction flèche plus courte syntaxe :

DB::table('users')->where(fn($query) => $query->where('activated', '=', $activated))
->get();
Copier après la connexion

Différences clés entre les fonctions fléchées et les fermetures régulières :

  • mot-clé fn au lieu de la fonction
  • Les variables sont automatiquement capturées à partir de la portée parent
  • Les fonctions fléchées renvoient toujours une valeur
  • Le mot-clé Return doit être omis
  • Les fonctions fléchées doivent avoir une seule expression comme instruction de retour

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal