Con Eloquent è molto facile recuperare dati relazionali. Dai un'occhiata al seguente esempio con il tuo scenario in Laravel 5.
Abbiamo tre modelli:
-
Articolo (appartiene a utente e categoria)
-
Categoria (ha molti articoli)
-
Utente (ha molti articoli)
- Articolo.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');
}
}
- Utente.php
<?php
namespace App\Models;
use Eloquent;
class User extends Eloquent {
protected $table = 'users';
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
È necessario comprendere la relazione del database e l'impostazione nei modelli. L'utente ha molti articoli. La categoria ha molti articoli. Gli articoli appartengono all'utente e alla categoria. Una volta impostate le relazioni in Laravel, diventa facile recuperare le relative informazioni.
Ad esempio, se vuoi recuperare un articolo utilizzando l'utente e la categoria, dovrai scrivere:
$article = \App\Models\Article::with(['user','category'])->first();
e puoi usarlo in questo modo:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
In un altro caso, potresti dover recuperare tutti gli articoli all'interno di una categoria o recuperare tutti gli articoli di un utente specifico. Puoi scriverlo così:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Puoi saperne di più su http://laravel.com/docs/5.0/eloquent