Med Eloquent är det mycket enkelt att hämta relationsdata. Kolla in följande exempel med ditt scenario i Laravel 5.
Vi har tre modeller:
-
Artikel (tillhör användare och kategori)
-
Kategori (har många artiklar)
-
Användare (har många artiklar)
- 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');
}
}
Du måste förstå din databasrelation och inställningar i modeller. Användaren har många artiklar. Kategorien har många artiklar. Artiklar tillhör användare och kategori. När du väl har ställt in relationerna i Laravel blir det lätt att hämta relaterade information.
Om du till exempel vill hämta en artikel genom att använda användaren och kategorin, måste du skriva:
$article = \App\Models\Article::with(['user','category'])->first();
och du kan använda detta så här:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
I ett annat fall kan du behöva hämta alla artiklar inom en kategori eller hämta alla en specifik användares artiklar. Du kan skriva det så här:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Du kan lära dig mer på http://laravel.com/docs/5.0/eloquent