Scopes de Laravel

Les scopes de Laravel peuvent s’avérer très pratiques lorsque vous devez interroger des données plusieurs fois. Cela rendra également vos requêtes plus faciles à lire et à gérer.

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 ✌️.

Newsletter

Ne manquez jamais les nouveaux conseils, tutoriels et autres.

Pas de spam, jamais. Nous ne partagerons jamais votre adresse électronique et vous pouvez vous désabonner à tout moment.