Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich drei Tische in Laravel mithilfe eloquenter Modelle?
In Laravel erleichtert die Verwendung des Eloquent ORM das Abrufen relationaler Daten. Stellen Sie sich das folgende Szenario vor:
Datenbank Tabellen:
Artikel:
Kategorien:
Benutzer:
Ziel:
Anzeige Artikel zusammen mit ihren Kategorienamen anstelle von Kategorie-IDs und Benutzernamen anstelle von Benutzer-IDs.
Verwendung einer herkömmlichen SQL-Abfrage:
Dies kann mithilfe einer herkömmlichen SQL-Abfrage erreicht werden so:
$articles = DB::table('articles') ->join('categories', 'articles.categories_id', '=', 'categories.id') ->join('users', 'users.id', '=', 'articles.user_id') ->select('articles.id', 'articles.title', 'articles.body', 'users.user_name', 'categories.category_name') ->get();
Eloquent verwenden Modell:
In Laravel ermöglicht die Verwendung von Eloquent-Modellen jedoch einen effizienteren Ansatz. Definieren Sie zunächst die Modelle:
Article.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:
namespace App\Models; use Eloquent; class Category extends Eloquent { protected $table = "categories"; public function articles() { return $this->hasMany('App\Models\Article'); } }
User.php:
namespace App\Models; use Eloquent; class User extends Eloquent { protected $table = 'users'; public function articles() { return $this->hasMany('App\Models\Article'); } }
Mit diesen definierten Modellen, Das Abrufen der erforderlichen Daten wird zum Kinderspiel:
$article = \App\Models\Article::with(['user','category'])->first();
Sie können dann wie folgt auf die Eigenschaften zugreifen:
// Retrieve user name $article->user->user_name // Retrieve category name $article->category->category_name
Zusätzlich können Sie Artikel auch nach Kategorie oder Benutzer abrufen:
$categories = \App\Models\Category::with('articles')->get(); $users = \App\Models\User::with('articles')->get();
Weitere Details finden Sie in der offiziellen Laravel-Dokumentation: http://laravel.com/docs/5.0/eloquent
Das obige ist der detaillierte Inhalt vonWie verbinde ich drei Tische in Laravel mithilfe eloquenter Modelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!