S Eloquent je velmi snadné získat relační data. Podívejte se na následující příklad s vaším scénářem v Laravel 5.
Máme tři modely:
-
Článek (patří uživateli a kategorii)
-
Kategorie (má mnoho článků)
-
Uživatel (má mnoho článků)
- Článek.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');
}
}
- Category.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');
}
}
Musíte porozumět vztahu k databázi a nastavení v modelech. Uživatel má mnoho článků. Kategorie obsahuje mnoho článků. Články patří uživateli a kategorii. Jakmile v Laravelu nastavíte vztahy, bude snadné získat související informace.
Pokud například chcete načíst článek pomocí uživatele a kategorie, budete muset napsat:
$article = \App\Models\Article::with(['user','category'])->first();
a můžete to použít takto:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
V jiném případě možná budete muset načíst všechny články v rámci kategorie nebo načíst všechny články konkrétního uživatele. Můžete to napsat takto:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Více se můžete dozvědět na http://laravel.com/docs/5.0/eloquent