Với Eloquent, rất dễ dàng để lấy dữ liệu quan hệ. Kiểm tra ví dụ sau với kịch bản của bạn trong Laravel 5.
Chúng tôi có ba mô hình:
1) Bài báo (thuộc về người dùng và danh mục)
2) Chuyên mục (có nhiều bài)
3) Người dùng (có nhiều bài viết)
1) 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');
}
}
2) Category.php
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent
{
protected $table = "categories";
public function articles()
{
return $this->hasMany('App\Models\Article');
}
}
3) User.php
<?php
namespace App\Models;
use Eloquent;
class User extends Eloquent
{
protected $table = 'users';
public function articles()
{
return $this->hasMany('App\Models\Article');
}
}
Bạn cần hiểu mối quan hệ cơ sở dữ liệu của bạn và thiết lập trong các mô hình. Người dùng có nhiều bài báo. Chuyên mục có nhiều bài. Bài viết thuộc về người dùng và danh mục. Khi bạn thiết lập các mối quan hệ trong Laravel, bạn sẽ dễ dàng truy xuất thông tin liên quan.
Ví dụ: nếu bạn muốn truy xuất một bài báo bằng cách sử dụng người dùng và danh mục, bạn cần viết:
$article = \App\Models\Article::with(['user','category'])->first();
và bạn có thể sử dụng cái này như vậy:
$article->user->user_name
$article->category->category_name
Trong trường hợp khác, bạn có thể cần truy xuất tất cả các bài báo trong một danh mục hoặc truy xuất tất cả các bài viết của một người dùng cụ thể. Bạn có thể viết nó như thế này:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Bạn có thể tìm hiểu thêm tại http://laravel.com/docs/5.0/eloquent