Une fois que les relations seront bien définies, il sera possible d'accéder facilement aux champs d'une table liée.
Prenons l'exemple d'un contrôleur qui appelle une vue en lui fournissant une instance du modèle Produit :
$produit = Produit::find('1');
return View('produits.show', compact('produit'));
Si on veut afficher dans un libellé la description de la catégorie du produit, la vue pourra retrouver cette information directement à partir du produit.
Ex :
Catégorie : {{ $produit->categorie->description }}
Pour que ceci soit possible, il faut avoir codé, dans le modèle du produit, une méthode nommée categorie() qui définit la relation belongsTo() entre un produit et une catégorie.
Le même principe s'applique lorsque les relations hasMany(), belongsToMany(), hasOne(), hasManyThrough(), etc.
Remarquez que dans cet exemple, la vue ne fait aucune requête à la base de données en respect avec les principes MVC. C'est le contrôleur qui, à l'aide d'une requête, a retrouvé les produits dont la vue a besoin. De son côté, la vue a simplement utilisé une relation pour accéder aux informations tirées des tables liées, ce qui est tout à fait correct.
▼Publicité