Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie verbinde ich drei Tische in Laravel mithilfe eloquenter Beziehungen?

Patricia Arquette
Freigeben: 2024-11-14 16:48:02
Original
312 Leute haben es durchsucht

How to Join Three Tables in Laravel Using Eloquent Relationships?

Drei Tabellen mit dem Laravel-Eloquent-Modell verbinden

Einführung

In Laravel wird das Abrufen relationaler Daten mit Eloquent-Modellen vereinfacht. In diesem Artikel wird gezeigt, wie Sie mit Eloquent drei Tabellen verknüpfen, um Daten aus den Tabellen „Artikel“, „Kategorien“ und „Benutzer“ abzurufen.

Datenbankschema

Beachten Sie das folgende Datenbankschema:

Articles Table Categories Table User Table
id id id
title category_name user_name
body
user_type
categories_id

user_id

Ziel

Das Ziel besteht darin, Artikel zusammen mit ihrem entsprechenden Kategorienamen anstelle der Kategorie-ID und dem Benutzernamen anstelle der Benutzer-ID abzurufen.

Eloquente Implementierung

Definieren Sie die Beziehungen zwischen den Modellen basierend auf dem Datenbankschema:

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');
    }
}
Nach dem Login kopieren

Category.php:

namespace App\Models;

use Eloquent;

class Category extends Eloquent
{
    protected $table = "categories";

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }
}
Nach dem Login kopieren

Benutzer.php:

namespace App\Models;

use Eloquent;

class User extends Eloquent
{
    protected $table = 'users';

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }
}
Nach dem Login kopieren

Datenabruf

So rufen Sie Artikel mit zugehörigen Daten ab:

$articles = \App\Models\Article::with(['user','category'])->get();
Nach dem Login kopieren

Verwendung

Greifen Sie wie folgt auf die zugehörigen Daten zu:

// Retrieve user name
$article->user->user_name

// Retrieve category name
$article->category->category_name
Nach dem Login kopieren

Abruf mit spezifischen Beziehungen

So rufen Sie Artikel innerhalb einer Kategorie oder von einem bestimmten Benutzer ab:

$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Nach dem Login kopieren

Fazit

Die Eloquent-Modelle von Laravel vereinfachen das Abrufen relationaler Daten erheblich. Indem Sie die Beziehungen zwischen Modellen verstehen und sie in Ihrem Code einrichten, können Sie einfach auf die erforderlichen Daten zugreifen und komplexere Abfragen effizient durchführen.

Das obige ist der detaillierte Inhalt vonWie verbinde ich drei Tische in Laravel mithilfe eloquenter Beziehungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage