Joindre trois tables à l'aide du modèle éloquent de Laravel
Dans Laravel, la récupération de données relationnelles est simplifiée avec les modèles éloquents. Cet article montre comment joindre trois tables à l'aide d'Eloquent pour récupérer les données des tables Articles, Catégories et Utilisateurs.
Considérez le schéma de base de données suivant :
Articles Table | Categories Table | User Table |
---|---|---|
id | id | id |
title | category_name | user_name |
body | user_type | |
categories_id | ||
user_id |
L'objectif est de récupérer les articles avec leur nom de catégorie correspondant au lieu ducategory_id et le nom d'utilisateur au lieu de l'user_id.
Définir le relations entre les modèles basées sur le schéma de la base de données :
Article.php:
namespace App\Models; use Eloquent; class Article extends Eloquent { protected $table = 'articles'; public function user() { return $this->belongsTo('App\Models\User'); } public function category() { return $this->belongsTo('App\Models\Category'); } }
Catégorie.php:
namespace App\Models; use Eloquent; class Category extends Eloquent { protected $table = "categories"; public function articles() { return $this->hasMany('App\Models\Article'); } }
User.php :
namespace App\Models; use Eloquent; class User extends Eloquent { protected $table = 'users'; public function articles() { return $this->hasMany('App\Models\Article'); } }
Pour récupérer des articles avec des données associées :
$articles = \App\Models\Article::with(['user','category'])->get();
Accédez aux données associées comme suit :
// Retrieve user name $article->user->user_name // Retrieve category name $article->category->category_name
Pour récupérer des articles au sein d'une catégorie ou par un utilisateur spécifique :
$categories = \App\Models\Category::with('articles')->get(); $users = \App\Models\Category::with('users')->get();
Les modèles Eloquent de Laravel simplifient grandement la tâche de récupération des données relationnelles. En comprenant les relations entre les modèles et en les configurant dans votre code, vous pouvez facilement accéder aux données nécessaires et effectuer efficacement des requêtes plus complexes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!