Dengan Eloquent sangat mudah untuk mengambil data relasional. Lihat contoh berikut dengan skenario Anda di Laravel 5.
Kami memiliki tiga model:
-
Artikel (milik pengguna dan kategori)
-
Kategori (memiliki banyak artikel)
-
Pengguna (memiliki banyak artikel)
- Artikel.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');
}
}
Anda perlu memahami relasi dan pengaturan database Anda dalam model. Pengguna memiliki banyak artikel. Kategori ini memiliki banyak artikel. Artikel milik pengguna dan kategori. Setelah Anda mengatur hubungan di Laravel, menjadi mudah untuk mengambil informasi terkait.
Misalnya, jika Anda ingin mengambil artikel dengan menggunakan pengguna dan kategori, Anda harus menulis:
$article = \App\Models\Article::with(['user','category'])->first();
dan Anda dapat menggunakan ini seperti ini:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
Dalam kasus lain, Anda mungkin perlu mengambil semua artikel dalam kategori atau mengambil semua artikel pengguna tertentu. Anda dapat menulisnya seperti ini:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Anda dapat mempelajari lebih lanjut di http://laravel.com/docs/5.0/eloquent