Structure générale d’une requête avec Eloquent ORM

Eloquent ORM vous offre une foule de fonctionnalités pour vous aider à bâtir vos requêtes à la base de données.

Même si les requêtes Eloquent n'utilisent pas SQL, la compréhension du langage SQL vous aidera à bien monter vos requêtes. Il pourrait même arriver des cas où vous trouverez plus simple d'effectuer une requête SQL directement dans Laravel. Mais ces cas sont rares et les fonctionnalités d'Eloquent répondront généralement à vos besoins tout en vous facilitant la vie.

▼Publicité

Une requête Eloquent est toujours bâtie sous la forme suivante :

Modèle Une ou plusieurs méthodes spécifiant la ou les clauses Une méthode terminale Optionnellement, une méthode de collection
Débuter la requête par le nom du modèle suivi de ::

Si vous ne désirez pas obtenir tous les enregistrements de la table, faites suivre par une méthode représentant la clause à exécuter (ex : where()).

Vous pouvez également effectuer les opérations SQL que vous avez l'habitude d'utiliser : join(), orderBy(), union(), groupBy(), etc.

Dans le cas où le modèle a défini des relations, il est possible d'utiliser le nom de la relation.

Il est également possible de spécifier les champs à retourner à l'aide de select().

Ces méthodes retournent toutes une instance de IlluminateDatabaseEloquentBuilder, de IlluminateDatabaseQueryBuilder ou encore un objet de relation, ce qui permet d'aligner plusieurs appels un à la suite de l'autre.

Vous devez séparer les méthodes par ‑>.

Terminer le tout par une méthode terminale qui se chargera d'effectuer la requête sur la base de données.

Il ne sera pas possible d'utiliser les résultats de la requête tant que la méthode terminale n'aura pas été appliquée.

Une fois qu'on a le résultat de la requête, il faut savoir de quel type d'objet il s'agit :

  • d'une instance du modèle
  • d'une collection
  • d'autre chose

Dans le cas où on obtient une collection, il est possible de faire suivre la requête par une méthode de manipulation de collection.

Ex : Produit:: where('prix', '<', 10) ‑>get() ->count();
Ex : Produit:: has('factures') ‑>get('id', 'code', 'description');  
Ex : Produit:: orderBy('prix')
    ->orderBy('code')
‑>pluck('description', 'id');  
Ex : Produit:: join('categories', 'categorie_id', '=', 'categorie.id')
    ->select('produits.*')
    ‑>where('categories.rang', '<', 10)
    ‑>orderBy('produits.code')
‑>get();  
Ex : Produit:: whereIn('id', [1, 2, 3]) 
    ‑>orderBy('code')
‑>paginate(10);  
Ex : Produit::   find($id);  
Ex : Produit::   all() ->sortBy('code');

Pour plus d'information

« Database: Query Builder ». Laravel. https://laravel.com/docs/master/queries

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories

Laisser un commentaire

5 + 5 =