recherche
Maisoncadre phpLaravelportée de la requête Laravel

La portée des requêtes dans Laravel est une fonctionnalité très importante qui vous permet de définir certaines méthodes de requête couramment utilisées dans le modèle pour les réutiliser dans l'ensemble de l'application. Ces portées de requête peuvent être globales (s'appliquer à l'ensemble du modèle) ou locales (s'appliquer uniquement à une méthode du modèle).

Dans cet article, nous présenterons la définition, l'utilisation et certaines choses auxquelles il convient de prêter attention à la portée des requêtes dans Laravel.

  1. Définition de la portée de la requête

La portée de la requête est une fonction anonyme qui reçoit un paramètre $query, qui est une instance d'Eloquent query Builder. Dans cette fonction anonyme, vous pouvez effectuer certaines opérations de requête sur l'instance, telles que l'ajout de clauses Where, de clauses order by, etc.

Ce qui suit est un exemple de définition de portée de requête de base :

public function scopePublished($query)
{
    return $query->where('status', '=', 'published');
}

Dans l'exemple ci-dessus, nous définissons une portée de requête nommée publiée, qui sera utilisée dans la requête. Ajouter automatiquement un clause Where pour filtrer les modèles publiés.

  1. Utiliser la portée de la requête

L'utilisation de la portée de la requête est très simple, il suffit d'appeler la méthode correspondante du modèle. Par exemple, si nous utilisons la portée de requête publiée dans l'exemple ci-dessus, il nous suffit d'appeler le code suivant :

$posts = Post::published()->get();

Le code ci-dessus renverra une collection de toutes les instances Post publiées.

Si vous devez transmettre des paramètres dans la portée de la requête, ajoutez simplement des paramètres dans cette méthode. Par exemple :

public function scopeCategory($query, $categoryId)
{
    return $query->where('category_id', '=', $categoryId);
}

Cette portée de requête peut être utilisée pour filtrer les articles de blog pour une catégorie spécifique.

$posts = Post::category(1)->get();

Le code ci-dessus renverra tous les articles de blog avec l'ID de catégorie 1.

Remarque : les étendues de requête peuvent être chaînées, vous pouvez donc utiliser plusieurs étendues de requête en même temps pour obtenir des résultats plus précis.

  1. Définition globale de la portée de la requête

Si vous souhaitez utiliser la même portée de requête dans tout le modèle, vous pouvez définir un domaine de portée de requête globale . Pour ce faire, appelez simplement la méthode de démarrage dans votre modèle et définissez une portée de requête globale à l'aide de la méthode static :: addGlobalScope.

Ce qui suit est un exemple de portée de requête globale de base :

protected static function boot()
{
    parent::boot();

    static::addGlobalScope('active', function (Builder $builder) {
        $builder->where('active', '=', 1);
    });
}

Dans l'exemple ci-dessus, nous définissons une portée de requête globale nommée active et la limitons pour les enregistrements dont le champ actif est égal à 1.

Désormais, lorsque vous interrogez le modèle dans n'importe quelle méthode, la portée de la requête prendra automatiquement effet.

  1. Supprimer la portée de la requête

Parfois, nous devrons peut-être supprimer la portée de la requête d'un modèle spécifique. Laravel fournit la méthode removeGlobalScope pour nous aider à y parvenir.

Par exemple, en supposant que nous ayons une portée de requête globale nommée active, nous pouvons utiliser la méthode suivante pour la supprimer :

$users = User::withoutGlobalScope('active')->get();

Le code ci-dessus ne renverra aucun effet actif. Restrictions de domaine pour tous les utilisateurs.

Remarque : Si vous souhaitez supprimer toutes les étendues de requête globales, vous pouvez utiliser la méthode withoutGlobalScopes.

$users = User::withoutGlobalScopes()->get();

Le code ci-dessus renverra tous les utilisateurs non limités par une portée de requête globale.

Summary

La portée des requêtes est une fonctionnalité extrêmement puissante dans Laravel. En utilisant des étendues de requête, vous pouvez facilement réutiliser les opérations de requête courantes dans votre application et organiser votre code plus clairement. Apprendre à utiliser correctement les étendues de requête peut non seulement améliorer votre productivité, mais également vous aider à créer des applications plus robustes.

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
Au-delà de l'appel de zoom: stratégies créatives pour connecter les équipes distribuéesAu-delà de l'appel de zoom: stratégies créatives pour connecter les équipes distribuéesApr 26, 2025 am 12:24 AM

ToenhanceengagementAndCoheSionAmongDstributedTeamsBeyondzoom, implémentations de typeStrates: 1) OrganizeVirtualCoffeebreaksForInformalChats, 2) usEasynchronousToolSlikeslackFornon-Workdissions, 3) IntrodugamificationwithTeamGamesorChallengs, and4) encourage

Quels sont les changements de rupture dans la dernière version de Laravel?Quels sont les changements de rupture dans la dernière version de Laravel?Apr 26, 2025 am 12:23 AM

Laravel10 introducesseveralBreakingChanges: 1) itRequiresphp8.1orHigher, 2) theRouserviceProviderNowUSESABOOTMethodForLoadingRoutes, 3) thewithetimestamps () MethodonEloventrelationShipSepresecated, and4) CLASSNOWPRES

Le paradoxe de la productivité: maintenir la concentration et la motivation dans des contextes éloignésLe paradoxe de la productivité: maintenir la concentration et la motivation dans des contextes éloignésApr 26, 2025 am 12:17 AM

TOMAINTAINFOCUSANDMOTIVATIONINREMOTEWork, CreateAstructuredenvironment, GestiondigitalDistractions, FosterMotivation ThroughsocialInteractions et legoalseting, maintien de la vie de vie et usureAppropriateTechnology.1) SetUpadediatedWorkspace andstickToaroutine.

Construire la confiance de loin: favoriser la collaboration dans des environnements distribuésConstruire la confiance de loin: favoriser la collaboration dans des environnements distribuésApr 26, 2025 am 12:13 AM

TofosterCollaborationAndTrustinReMoteTeams, ImplementTheSeStrategies: 1) établir des communications structurées et structurées avec la PersonalCheck-Ins, 2) USECOLLABORATIVETOOLSFORTRANTRANSPARENCY, 3) Reconnaître les effets de recherche et 4) FosteracultureOftrustAdadaptabilité.

Quelles sont les principales fonctionnalités de la dernière version Laravel?Quelles sont les principales fonctionnalités de la dernière version Laravel?Apr 26, 2025 am 12:01 AM

La dernière version de Laravel des principales caractéristiques comprend: 1. Laraveloctane améliore les performances des applications, 2. Amélioration des relations de support des usines et des définitions d'état, 3. Amélioration des commandes artisanales, 4. Amélioration de la gestion des erreurs, 5. Nouveaux accessoires et modificateurs éloquents. Ces caractéristiques améliorent considérablement l'efficacité du développement et les performances des applications, mais doivent être utilisées avec prudence pour éviter les problèmes potentiels.

L'illusion de l'inclusion: aborder l'isolement et la solitude dans le travail à distanceL'illusion de l'inclusion: aborder l'isolement et la solitude dans le travail à distanceApr 25, 2025 am 12:28 AM

TOCOMBATISALATION ANDONIELLESSIONSInRemotework, CompaniesshouldImplementRegular, significatif, fournit des émeutes et de l'usetéchnologie.

Laravel pour le développement complet: un guide completLaravel pour le développement complet: un guide completApr 25, 2025 am 12:27 AM

LaraveispopularForfull-stackdevelopmentbecauseitoffersaSEAmlessBlendofbackendPowerAndfrontendflexibility.1) itsbackendCapabilities, like eloquentorm, simplifydatabaseinteracts.2) thebladetemplatingngineallowsforclean, dynamichtmltemplate.3) Laravelmix

CONSTENCE DE CONSÉRENCE VIDÉO: Choisir la bonne plate-forme pour les réunions distantesCONSTENCE DE CONSÉRENCE VIDÉO: Choisir la bonne plate-forme pour les réunions distantesApr 25, 2025 am 12:26 AM

Les facteurs clés du choix d'une plate-forme de conférence vidéo incluent l'interface utilisateur, la sécurité et les fonctionnalités. 1) L'interface utilisateur doit être intuitive, comme le zoom. 2) La sécurité doit être prêtée attention et Microsoft Teams fournit un cryptage de bout en bout. 3) Les fonctions doivent faire correspondre les exigences, GoogleMeet convient aux réunions courtes et Ciscowebex fournit des outils de collaboration avancés.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit