Com o Eloquent é muito fácil recuperar dados relacionais. Confira o exemplo a seguir com seu cenário no Laravel 5.
Temos três modelos:
-
Artigo (pertence ao usuário e categoria)
-
Categoria (tem muitos artigos)
-
Usuário (tem muitos artigos)
- Artigo.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');
}
}
- Categoria.php
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent {
protected $table = "categories";
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
- Usuário.php
<?php
namespace App\Models;
use Eloquent;
class User extends Eloquent {
protected $table = 'users';
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
Você precisa entender sua relação de banco de dados e configurar em modelos. O usuário tem muitos artigos. A categoria tem muitos artigos. Os artigos pertencem ao usuário e à categoria. Depois de configurar os relacionamentos no Laravel, fica fácil recuperar as informações relacionadas.
Por exemplo, se você quiser recuperar um artigo usando o usuário e a categoria, precisará escrever:
$article = \App\Models\Article::with(['user','category'])->first();
e você pode usar isso assim:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
Em outro caso, talvez seja necessário recuperar todos os artigos de uma categoria ou todos os artigos de um usuário específico. Você pode escrever assim:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Você pode saber mais em http://laravel.com/docs/5.0/eloquent