Si vous n’êtes pas familier avec les Scopes de Laravel. C’est le tutoriel qu’il vous faut 😉 .
Que sont les scopes
Il existe deux types de scopes dans Laravel (Global et Local). Afin de rester simple, je ne vais couvrir que les scopes locaux ; cependant, vous devriez jeter un coup d’oeil aux scopes globaux quand vous en aurez l’occasion.
Alors, qu’est-ce qu’un Portée de la requête locale dans Laravel ? Heureux que vous posiez la question. Voici un exemple de portée locale à l’intérieur d’un modèle utilisateur :
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
public function scopeAdmin($query)
{
return $query->where('admin', 1);
}
}
Dans l’exemple de code ci-dessus, vous pouvez voir que nous avons l’attribut scopeAdmin
qui renvoie un $query
où la colonne admin
a pour valeur 1
. Maintenant que vous avez vu un exemple de portée locale, nous allons apprendre à l’utiliser.
Comment utiliser les scopes
Si vous voulez utiliser notre scopeAdmin
à l’intérieur de notre projet pour obtenir une collection de nos utilisateurs admin, nous pourrions simplement écrire le code suivant :
$admins = User::admin()->all();
Cela nous donnera maintenant tous les admin
dans notre base de données.
Avec un peu de chance, vous pouvez voir à quel point ils peuvent être puissants et comment les scopes peuvent vous faire gagner du temps et rendre votre code plus lisible. Si vous n’êtes toujours pas convaincu par les scopes, continuez à lire pour voir un exemple de la façon dont ils peuvent vous faciliter la vie.
Pourquoi utiliser les scopes
En reprenant nos exemples de code précédents, disons que nous voulons modifier notre requête pour qu’elle ne renvoie que les éléments suivants admin
où la colonne active
a pour valeur 1
. Si nous n’utilisions pas de scopes dans notre application, nous devrions rechercher la requête suivante dans notre base de code :
$admins = User::where('admin', 1)->all();
Et les remplacer par :
$admins = User::where('admin', 1)->where('active', 1)->all();
Cependant, si nous utilisions des scopes, nous pourrions simplement modifier notre scope comme suit :
public function scopeAdmin($query)
{
return $query->where('admin', 1)->where('active', 1);
}
Et toutes nos requêtes actuelles obtiendront nos utilisateurs admin où active
a la valeur 1. Comme vous pouvez le constater, votre code sera plus efficace, plus facile à maintenir et à lire.
Conclusion
L’utilisation des scopes dans votre application Laravel ajoutera la logique à vos modèles Eloquent au lieu de la placer directement dans vos vues et contrôleurs. Cela rendra votre projet plus facile à maintenir et à lire.
J’espère que cet article vous a permis de mieux comprendre les scopes de Laravel et j’espère que vous les utiliserez dans vos futurs projets Laravel ✌️.