Approche éloquente pour joindre trois tables
Problème :
Considérez trois tables : articles, Catégories et utilisateurs. L'objectif est de récupérer les articles avec leur nom de catégorie et leur nom d'utilisateur au lieu de leurs identifiants respectifs.
Solution :
Eloquent propose une méthode simple pour récupérer des données relationnelles.
Définition du modèle :
// 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'); } } // Category.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'); } }
Requête éloquente :
Pour récupérer des articles avec des informations sur la catégorie et l'utilisateur :
$article = \App\Models\Article::with(['user','category'])->first();
Utilisation :
Pour accéder aux données associées :
$article->user->user_name //Retrieve user name $article->category->category_name //Retrieve Category name
Autres exemples :
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Ressources supplémentaires :
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!