Dzięki Eloquent bardzo łatwo jest odzyskać dane relacyjne. Sprawdź następujący przykład ze swoim scenariuszem w Laravel 5.
Mamy trzy modele:
1) Artykuł (należy do użytkownika i kategorii)
2) Kategoria (zawiera wiele artykułów)
3) Użytkownik (zawiera wiele artykułów)
1) Artykuł.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');
}
}
Musisz zrozumieć relacje z bazą danych i konfigurację modeli. Użytkownik ma wiele artykułów. Kategoria zawiera wiele artykułów. Artykuły należą do użytkownika i kategorii. Po skonfigurowaniu relacji w Laravel łatwo będzie odzyskać powiązane informacje.
Na przykład, jeśli chcesz pobrać artykuł za pomocą użytkownika i kategorii, musisz napisać:
$article = \App\Models\Article::with(['user','category'])->first();
i możesz użyć tego w ten sposób:
$article->user->user_name
$article->category->category_name
W innym przypadku może zajść potrzeba pobrania wszystkich artykułów w kategorii lub wszystkich artykułów określonego użytkownika. Możesz to napisać tak:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Możesz dowiedzieć się więcej na http://laravel.com/docs/5.0/eloquent