Med Eloquent er det meget nemt at hente relationelle data. Tjek følgende eksempel med dit scenarie i Laravel 5.
Vi har tre modeller:
-
Artikel (tilhører bruger og kategori)
-
Kategori (har mange artikler)
-
Bruger (har mange artikler)
- 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');
}
}
- Category.php
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent {
protected $table = "categories";
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
- Bruger.php
<?php
namespace App\Models;
use Eloquent;
class User extends Eloquent {
protected $table = 'users';
public function articles() {
return $this->hasMany('App\Models\Article');
}
}
Du skal forstå din databaserelation og opsætning i modeller. Brugeren har mange artikler. Kategorien har mange artikler. Artikler hører til bruger og kategori. Når du først har opsat relationerne i Laravel, bliver det nemt at hente de relaterede oplysninger.
For eksempel, hvis du vil hente en artikel ved at bruge brugeren og kategorien, skal du skrive:
$article = \App\Models\Article::with(['user','category'])->first();
og du kan bruge dette sådan:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
I et andet tilfælde skal du muligvis hente alle artiklerne inden for en kategori eller hente alle en specifik brugers artikler. Du kan skrive det sådan her:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Du kan lære mere på http://laravel.com/docs/5.0/eloquent