Dans sa forme la plus simple, le modèle permet de faire le lien entre une classe et une table dont le nom est celui de la classe suivi avec un s terminal. Ceci fonctionne même si la classe est complètement vide.
Évidemment, il est possible d'aller beaucoup plus loin avec le modèle. On pourra notamment y coder les relations entre les tables, ce qui simplifiera grandement les requêtes.
On utilisera à cette fin les méthodes hasMany(), belongsTo(), belongsToMany(), hasOne(), hasManyThrough(), etc.
Par exemple, dans une table factures qui contient des items dans une relation de plusieurs à plusieurs, il est possible d'effectuer une grosse requête pour retrouver la liste des items d'une facture :
$facture = Facture::find($id);
$items = Item::join('facture_item', 'item_id', '=', 'items.id')
->join('factures', 'facture_id', '=', 'factures.id')
->where('factures.id', $facture->id)
->select('items.*')
->get();
On aurait aussi pu travailler directement avec une requête SQL pour obtenir les mêmes informations, mais stockées dans un tableau plutôt que dans une collection :
$facture = Facture::find($id);
$items = DB::select('SELECT * FROM items INNER JOIN facture_item ON facture_item.item_id=items.id WHERE facture_item.facture_id = ?', [$facture->id]);
Vous conviendrez cependant qu'il est beaucoup plus simple de retrouver la liste des items d'une facture comme suit :
$facture = Facture::find($id);
$items = $facture->items;
Mais pour pouvoir tirer avantage de cette fonctionnalité, il faut d'abord modifier le fichier modèle de la facture afin d'y définir la relation entre une facture et un item.
« Eloquent: Relationships ». Laravel. https://laravel.com/docs/master/eloquent-relationships
« Eloquent Relationships: The Ultimate Guide ». Quick Admin Panel. https://quickadminpanel.com/blog/eloquent-relationships-the-ultimate-guide/
« Illuminate\Database\Eloquent\Relations ». Laravel API. http://v4.golaravel.com/api/4.2/Illuminate/Database/Eloquent/Relations.html
« Eloquent: Relationships ». laravel-doc. http://laravel-doc.readthedocs.io/en/stable/eloquent-relationships/
« Laravel Relationships CheatSheet ». Laravel Tips'n Tricks. http://laraveltnt.com/laravel-relationships-cheatsheet/
« Eloquent Relationships Cheat Sheet ». Medium. https://medium.com/@Mahmoud_Zalt/eloquent-relationships-cheat-sheet-5155498c209
▼Publicité