Mit Eloquent ist es sehr einfach, relationale Daten abzurufen. Testen Sie das folgende Beispiel mit Ihrem Szenario in Laravel 5.
Wir haben drei Modelle:
1) Artikel (gehört zu Benutzer und Kategorie)
2) Kategorie (hat viele Artikel)
3) Benutzer (hat viele Artikel)
1) Article.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');
}
}
Sie müssen Ihre Datenbankbeziehung verstehen und in Modellen einrichten. Benutzer hat viele Artikel. Kategorie hat viele Artikel. Artikel gehören zu Benutzer und Kategorie. Sobald Sie die Beziehungen in Laravel eingerichtet haben, können Sie die zugehörigen Informationen leicht abrufen.
Wenn Sie beispielsweise einen Artikel mithilfe des Benutzers und der Kategorie abrufen möchten, müssen Sie Folgendes schreiben:
$article = \App\Models\Article::with(['user','category'])->first();
und Sie können dies wie folgt verwenden:
$article->user->user_name
$article->category->category_name
In einem anderen Fall müssen Sie möglicherweise alle Artikel innerhalb einer Kategorie oder alle Artikel eines bestimmten Benutzers abrufen. Sie können es so schreiben:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Weitere Informationen finden Sie unter http://laravel.com/docs/5.0/eloquent