Z Eloquent bardzo łatwo jest pobrać dane relacyjne. Sprawdź poniższy przykład ze swoim scenariuszem w Laravel 5.
Mamy trzy modele:
-
Artykuł (należy do użytkownika i kategorii)
-
Kategoria (ma wiele artykułów)
-
Użytkownik (ma wiele artykułów)
- 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');
}
}
- Kategoria.php
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent {
protected $table = "categories";
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
- 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ć relację i konfigurację bazy danych w modelach. Użytkownik ma wiele artykułów. Kategoria zawiera wiele artykułów. Artykuły należą do użytkownika i kategorii. Po skonfigurowaniu relacji w Laravel odzyskanie powiązanych informacji staje się łatwe.
Na przykład, jeśli chcesz pobrać artykuł, używając użytkownika i kategorii, musisz napisać:
$article = \App\Models\Article::with(['user','category'])->first();
i możesz użyć tego w ten sposób:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
W innym przypadku może być konieczne pobranie wszystkich artykułów z kategorii lub pobranie 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();
Więcej informacji znajdziesz na http://laravel.com/docs/5.0/eloquent