Les portées globales sont un concept essentiel dans Laravel, permettant la réutilisation des conditions éloquentes dans toute votre application. En implémentant des portées globales, vous pouvez appliquer des conditions spécifiques aux requêtes sur tous les modèles, favorisant ainsi la réutilisation et la cohérence du code. En revanche, les portées locales sont limitées à un seul modèle. Dans ce didacticiel, nous nous concentrerons sur la création et l'utilisation de portées globales dans Laravel.
where('is_active', '=', '1'); //or we can write $builder->whereIsActive('1'); } }
Après avoir ajouté ActiveScope dans le modèle, User::all() générera le SQL suivant.
select * from `users` where `is_active` = '1'Il peut y avoir des scénarios dans lesquels vous souhaitez récupérer toutes les données sans appliquer la portée globale. Dans Laravel, vous pouvez contourner une portée globale et récupérer toutes les données en utilisant la méthode sansGlobalScope.
User::withoutGlobalScope(ActiveScope::class)->get();Si vous souhaitez supprimer plusieurs ou la totalité des étendues globales appliquées à un modèle, vous pouvez utiliser la méthode sansGlobalScopes dans Laravel. Cette méthode vous permet de contourner toutes les étendues globales ou de spécifier celles que vous souhaitez supprimer. Voici un exemple :
// Remove all of the global scopes... User::withoutGlobalScopes()->get();// Remove some of the global scopes... User::withoutGlobalScopes([ ActiveScope::class, AgeScope::class ])->get();Et si vous aimez le contenu et souhaitez soutenir d'autres articles géniaux, pensez à m'offrir un café ! ☕️ ? Votre soutien compte pour moi et contribue à maintenir le flux de connaissances. Vous pouvez le faire ici : ? Achetez-moi un café
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3