Con Eloquent es muy fácil recuperar datos relacionales. Mira el siguiente ejemplo con tu escenario en Laravel 5.
Disponemos de tres modelos:
-
Artículo (pertenece a usuario y categoría)
-
Categoría (tiene muchos artículos)
-
Usuario (tiene muchos artículos)
- Artículo.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');
}
}
- Categoría.php
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent {
protected $table = "categories";
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
- Usuario.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 y la configuración de su base de datos en los modelos. El usuario tiene muchos artículos. La categoría tiene muchos artículos. Los artículos pertenecen al usuario y la categoría. Una vez que configura las relaciones en Laravel, se vuelve 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í:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
En otro caso, es posible que necesite 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