Maison > base de données > tutoriel mysql > Comment joindre trois tables dans Laravel en utilisant des relations éloquentes ?

Comment joindre trois tables dans Laravel en utilisant des relations éloquentes ?

Patricia Arquette
Libérer: 2024-11-14 16:48:02
original
367 Les gens l'ont consulté

How to Join Three Tables in Laravel Using Eloquent Relationships?

Joindre trois tables à l'aide du modèle éloquent de Laravel

Introduction

Dans Laravel, la récupération de données relationnelles est simplifiée avec les modèles éloquents. Cet article montre comment joindre trois tables à l'aide d'Eloquent pour récupérer les données des tables Articles, Catégories et Utilisateurs.

Schéma de base de données

Considérez le schéma de base de données suivant :

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

user_id

Objectif

L'objectif est de récupérer les articles avec leur nom de catégorie correspondant au lieu ducategory_id et le nom d'utilisateur au lieu de l'user_id.

Implémentation éloquente

Définir le relations entre les modèles basées sur le schéma de la base de données :

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');
    }
}
Copier après la connexion

Catégorie.php:

namespace App\Models;

use Eloquent;

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

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }
}
Copier après la connexion

User.php :

namespace App\Models;

use Eloquent;

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

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }
}
Copier après la connexion

Récupération de données

Pour récupérer des articles avec des données associées :

$articles = \App\Models\Article::with(['user','category'])->get();
Copier après la connexion

Utilisation

Accédez aux données associées comme suit :

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

// Retrieve category name
$article->category->category_name
Copier après la connexion

Récupération avec des relations spécifiques

Pour récupérer des articles au sein d'une catégorie ou par un utilisateur spécifique :

$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
Copier après la connexion

Conclusion

Les modèles Eloquent de Laravel simplifient grandement la tâche de récupération des données relationnelles. En comprenant les relations entre les modèles et en les configurant dans votre code, vous pouvez facilement accéder aux données nécessaires et effectuer efficacement des requêtes plus complexes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal