Maison >cadre php >Laravel >Comment utiliser la portée dans Laravel

Comment utiliser la portée dans Laravel

WBOY
WBOYoriginal
2022-06-09 11:15:313260parcourir

Dans Laravel, scope est utilisé pour traiter les données dans le modèle. Dans le modèle, vous pouvez définir des méthodes commençant par scope. Ces méthodes peuvent être appelées directement via le modèle et sont appelées scopes de requête. avec la première lettre en majuscules ($query){...}".

Comment utiliser la portée dans Laravel

L'environnement d'exploitation de cet article : système Windows 10, Laravel version 8, ordinateur Dell G3.

Comment utiliser scope dans laravel

Scope dans laravel

Dans laravel, les données (ajouter, supprimer, modifier, vérifier) ​​qui sont traitées dans le modèle (appartiennent au modèle mais n'y appartiennent pas), sont introduites to scope to handle

C'est-à-dire que dans la méthode de définition du modèle, ajoutez la portée du préfixe.

En bref, le modèle dans Laravel peut définir des méthodes au début de la portée, et ces méthodes peuvent être appelées directement via le modèle. Ce type d’approche est également appelé portée de requête.

Les requêtes conditionnelles sont souvent utilisées dans les requêtes de données. Certaines de ces conditions de requête sont les mêmes. Scope peut réaliser la réutilisation de ces mêmes requêtes conditionnelles.

Portée normale

Définition

Le nom de la méthode est scope + la première lettre est en majuscule (cela peut être défini à volonté)

public function scopeStatus($query)
{
    return $query->where('status',1);
}

Utilisation

qui appelle la fonction avec la première lettre minuscule après avoir supprimé la portée.

scopeStatus() appelle status().

User::status()->get();

Portée globale

Nous devons redéfinir la méthode de démarrage Après avoir intégré le démarrage de la classe parent, ajoutez la portée globale, afin qu'elle soit utilisée globalement par défaut.

protected static function boot()
{
    parent::boot(); // TODO: Change the autogenerated stub
    static::addGlobalScope('avaiable',function (Builder $builder){
        $builder->whereIn('status', [0, 1]);
    });
}

Parfois, lorsque nous avons des requêtes qui n'ont pas besoin de cette portée globale, il suffit de la supprimer.

Utilisez la méthode withOutGlobalScope()

Post::withOutGlobalScope('avaiable')->get();

[Recommandations associées : tutoriel vidéo laravel]

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