Eloquentを使用すると、リレーショナルデータを非常に簡単に取得できます。 Laravel5のシナリオで次の例を確認してください。
3つのモデルがあります:
-
記事(ユーザーとカテゴリに属する)
-
カテゴリ(多くの記事があります)
-
ユーザー(多くの記事があります)
- Article.php
<?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
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent {
protected $table = "categories";
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
- User.php
<?php
namespace App\Models;
use Eloquent;
class User extends Eloquent {
protected $table = 'users';
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
データベースの関係とモデルの設定を理解する必要があります。ユーザーは多くの記事を持っています。カテゴリには多くの記事があります。記事はユーザーとカテゴリに属します。 Laravelでリレーションシップを設定すると、関連情報を簡単に取得できるようになります。
たとえば、ユーザーとカテゴリを使用して記事を取得する場合は、次のように記述する必要があります。
$article = \App\Models\Article::with(['user','category'])->first();
そして、あなたはこれを次のように使うことができます:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
別のケースでは、カテゴリ内のすべての記事を取得するか、特定のユーザーのすべての記事を取得する必要がある場合があります。次のように書くことができます:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
詳細については、http://laravel.com/docs/5.0/eloquent をご覧ください。