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){...}".
L'environnement d'exploitation de cet article : système Windows 10, Laravel version 8, ordinateur Dell G3.
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!