Met Eloquent is het heel eenvoudig om relationele gegevens op te halen. Bekijk het volgende voorbeeld met jouw scenario in Laravel 5.
We hebben drie modellen:
-
Artikel (behoort tot gebruiker en categorie)
-
Categorie (heeft veel artikelen)
-
Gebruiker (heeft veel artikelen)
- Artikel.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');
}
}
- Categorie.php
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent {
protected $table = "categories";
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
- Gebruiker.php
<?php
namespace App\Models;
use Eloquent;
class User extends Eloquent {
protected $table = 'users';
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
U moet uw databaserelatie en instellingen in modellen begrijpen. De gebruiker heeft veel artikelen. De categorie heeft veel artikelen. Artikelen behoren tot gebruiker en categorie. Zodra je de relaties in Laravel hebt ingesteld, wordt het gemakkelijk om de gerelateerde informatie op te halen.
Als u bijvoorbeeld een artikel wilt ophalen met behulp van de gebruiker en categorie, moet u schrijven:
$article = \App\Models\Article::with(['user','category'])->first();
en je kunt dit als volgt gebruiken:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
In een ander geval moet u mogelijk alle artikelen binnen een categorie ophalen of alle artikelen van een specifieke gebruiker. Je kunt het als volgt schrijven:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
U kunt meer informatie vinden op http://laravel.com/docs/5.0/eloquent