Mit Eloquent ist es sehr einfach, relationale Daten abzurufen. Sehen Sie sich das folgende Beispiel mit Ihrem Szenario in Laravel 5 an.
Wir haben drei Modelle:
-
Artikel (gehört zu Benutzer und Kategorie)
-
Kategorie (hat viele Artikel)
-
Benutzer (hat viele Artikel)
- 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');
}
}
- Kategorie.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');
}
}
Sie müssen Ihre Datenbankbeziehung und die Einrichtung in Modellen verstehen. Der Benutzer hat viele Artikel. Die Kategorie hat viele Artikel. Artikel gehören zu Benutzer und Kategorie. Sobald Sie die Beziehungen in Laravel eingerichtet haben, wird es einfach, die zugehörigen Informationen abzurufen.
Wenn Sie beispielsweise einen Artikel anhand 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 folgendermaßen verwenden:
//retrieve user name
$article->user->user_name
//retrieve category 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. Du kannst 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