Với Eloquent, rất dễ dàng để truy xuất 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:
-
Bài viết (thuộc về người dùng và danh mục)
-
Chuyên mục (có nhiều bài)
-
Người dùng (có nhiều bài viết)
- 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');
}
}
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 sử 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, việc truy xuất thông tin liên quan trở nên dễ dàng.
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 như vậy:
//retrieve user name
$article->user->user_name
//retrieve category 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 báo 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