Dans Laravel, l'utilisation de l'ORM Eloquent facilite la récupération de données relationnelles. Considérez le scénario suivant :
Base de données Tableaux :
Articles :
Catégories :
Utilisateurs :
Objectif :
Affichage articles ainsi que leurs noms de catégorie au lieu des ID de catégorie et les noms d'utilisateur au lieu des ID d'utilisateur.
Utilisation d'une requête SQL traditionnelle :
Cela peut être réalisé à l'aide d'une requête SQL traditionnelle comme ceci :
$articles = DB::table('articles') ->join('categories', 'articles.categories_id', '=', 'categories.id') ->join('users', 'users.id', '=', 'articles.user_id') ->select('articles.id', 'articles.title', 'articles.body', 'users.user_name', 'categories.category_name') ->get();
Utiliser Eloquent Modèle :
Cependant, dans Laravel, l'utilisation de modèles Eloquent permet une approche plus rationalisée. Pour commencer, définissez les modèles :
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'); } }
Avec ces modèles définis, récupérer les données requises devient simple :
$article = \App\Models\Article::with(['user','category'])->first();
Vous pouvez ensuite accéder aux propriétés comme suit :
// Retrieve user name $article->user->user_name // Retrieve category name $article->category->category_name
De plus, vous pouvez également récupérer des articles par catégorie ou utilisateur :
$categories = \App\Models\Category::with('articles')->get(); $users = \App\Models\User::with('articles')->get();
Pour plus de détails, reportez-vous à la documentation officielle de Laravel : http://laravel.com/docs/5.0/eloquent
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!