Con Eloquent es muy fácil recuperar datos relacionales. Consulte el siguiente ejemplo con su escenario en Laravel 5.
Tenemos tres modelos:
1) Artículo (pertenece al usuario y categoría)
2) Categoría (tiene muchos artículos)
3) Usuario (tiene muchos artículos)
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');
}
}
Debe comprender la relación de su base de datos y la configuración en modelos. El usuario tiene muchos artículos. La categoría tiene muchos artículos. Los artículos pertenecen a usuario y categoría. Una vez que configure las relaciones en Laravel, será fácil recuperar la información relacionada.
Por ejemplo, si desea recuperar un artículo utilizando el usuario y la categoría, deberá escribir:
$article = \App\Models\Article::with(['user','category'])->first();
y puedes usar esto así:
$article->user->user_name
$article->category->category_name
En otro caso, es posible que deba recuperar todos los artículos dentro de una categoría, o recuperar todos los artículos de un usuario específico. Puedes escribirlo así:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Puede obtener más información en http://laravel.com/docs/5.0/eloquent