Afficher les données utilisateur liées à un article peut être complexe sans une bonne structure.
Sans les relations Eloquent, vous risquez de dupliquer des données ou de rencontrer des erreurs fréquentes.
Découvrez comment utiliser les relations Eloquent pour gérer efficacement et afficher les informations utilisateur dans vos vues Laravel.
Initiez-vous à Laravel et réalisez votre première application en toute confiance.
Cet axe consiste à afficher des données provenant d’un modèle lié à un autre modèle en utilisant les relations Eloquent. Ici, nous allons afficher les informations de l’utilisateur lié à chaque article, telles que son nom et la date d’inscription, et créer un lien vers son profil.
Afficher utilisateurs avec Eloquent Laravel
Dans une application Laravel, vous pouvez lier des modèles entre eux à l’aide des relations Eloquent. Dans ce cas, nous allons lier un modèle Article avec un modèle User pour afficher les informations de l’utilisateur associé à chaque article. Cela permet d’afficher des données telles que le nom de l’utilisateur et la date de son inscription, tout en créant un lien vers son profil.
Dans la vue article/index.blade.php, nous allons afficher les articles avec les informations de l’utilisateur qui y est lié.
Voici un extrait de code qui vous montre comment intégrer les données de l’utilisateur :
@foreach($articles as $article)
$article->id]) }}">
{{ $article->title }}
{{ Str::words($article->content, 5) }}
Par $article->user->id]) }}">
{{ $article->user->name }}
inscrit le {{ $article->user->created_at->format('d/m/y') }}
{{ $article->created_at->diffForHumans() }}
@endforeach
- {{ $article->user->name }} permet d’afficher le nom de l’utilisateur lié à l’article grâce à la relation définie dans le modèle.
- {{ route(‘user.profile’, [‘user’ => $article->user->id]) }} génère un lien vers la page de profil de l’utilisateur.
- {{ $article->user->created_at->format(‘d/m/y’) }} affiche la date d’inscription de l’utilisateur dans le format jj/mm/aa.
Les relations entre les modèles Article et User sont définies grâce à Eloquent. Dans le modèle Article, vous allez déclarer la relation belongsTo qui indique que chaque article appartient à un utilisateur.
Dans le model Article :
public function user()
{
return $this->belongsTo(User::class);
}
De même, dans le modèle User, vous pouvez définir la relation inverse si nécessaire. Toutefois, dans ce cas précis, cette relation n’est pas utilisée ici, mais il est possible de définir une relation hasMany dans le modèle User pour indiquer qu’un utilisateur peut avoir plusieurs articles.
Et dans le model User :
public function user()
{
return $this->belongsTo(User::class);
}
UserController : méthode profile() pour modèles Laravel
La méthode profile() dans le contrôleur UserController est utilisée pour afficher le profil d’un utilisateur spécifique. Grâce à la liaison de modèles (route model binding), Laravel passe automatiquement l’instance de l’utilisateur à la méthode.
public function profile(User $user){
return 'je suis un utilisateur '.$user->name;
}
- La méthode profile() accepte un paramètre User $user grâce à la liaison de modèles (route model binding).
- Elle retourne un simple message affichant le nom de l’utilisateur.
Route model binding dans web.php
Assurez-vous que la route est bien définie pour accéder au profil de l’utilisateur.
Route::get('profile/{user}',[UserController::class,'profile'])->name('user.profile');
Cette route utilise la liaison de modèles pour passer automatiquement l’instance de User correspondant à l’ID dans l’URL à la méthode profile().
Résultat affiché
Lorsque cette configuration est mise en place, chaque article affichera :
- Le nom de l’auteur de l’article avec un lien cliquable menant à son profil.
- La date à laquelle l’utilisateur s’est inscrit, formatée comme jj/mm/aa.
Exemple de rendu visuel dans la vue :
{{$article->user?->name ?? 'Auteur inconnu'}}
Et lorsque vous cliquez sur ce nom, vous êtes redirigé vers la page URL /profile/id_user, comme illustré ci-dessous :
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment afficher les données utilisateur avec Eloquent dans Laravel ?
Quel est le rôle de la méthode profile() dans UserController ?
Comment définir une route pour accéder au profil utilisateur dans Laravel ?
Comment gérer les erreurs de relation inexistante dans Laravel ?
Comment afficher les articles avec les informations utilisateur liées dans une vue Blade ?
Conclusion
En maîtrisant les relations Eloquent, vous enrichissez vos applications Laravel avec des données utilisateur dynamiques et interactives. Quelles autres fonctionnalités Eloquent souhaitez-vous explorer pour améliorer vos projets Laravel ?