Maison > base de données > tutoriel mysql > le corps du texte

Comment récupérer des données de trois tables dans Laravel à l'aide de jointures : un guide complet

Barbara Streisand
Libérer: 2024-10-25 07:15:02
original
124 Les gens l'ont consulté

How to Retrieve Data from Three Tables in Laravel Using Joins: A Comprehensive Guide

Laravel Join avec 3 tables : un guide complet

Dans cet article, nous explorerons un moyen efficace de récupérer les données de trois tables en utilisant La puissante fonctionnalité de jointure de Laravel.

Énoncé du problème

Disons que nous avons une application de type Twitter avec trois tables : Utilisateurs, Abonnés et Partages. La table Utilisateurs contient des informations sur les utilisateurs, la table Abonnés représente les relations entre les utilisateurs qui se suivent et la table Partages stocke les publications partagées par les utilisateurs.

Notre objectif est de récupérer tous les partages des utilisateurs qu'un utilisateur spécifique suit. Cela implique de joindre les trois tables pour identifier les données souhaitées.

Approche initiale

L'approche initiale utilisant plusieurs jointures à gauche n'a pas donné les résultats escomptés. L'approche correcte consiste à utiliser une jointure au lieu de jointures gauches et à connecter les tables comme suit :

<code class="php">$shares = DB::table('shares')
    ->join('users', 'users.id', '=', 'shares.user_id')
    ->join('followers', 'followers.user_id', '=', 'users.id')
    ->where('followers.follower_id', '=', 3)
    ->get();</code>
Copier après la connexion

Dans cette jointure, nous commençons par la table Shares et joignons la table Users en fonction du champ user_id. Ensuite, nous nous joignons à la table Followers en fonction du champ user_id de la table Users et du champ follower_id de la table Followers.

Approche modèle

Si vous utilisez Modèles éloquents, vous pouvez tirer parti de leurs méthodes relationnelles pour simplifier le processus de jointure. Voici un exemple :

<code class="php">$my = User::find('my_id');

// Retrieves all shares by users that I follow
// eager loading the "owner" of the share
$shares = Share::with('user')
    ->join('follows', 'follows.user_id', '=', 'shares.user_id')
    ->where('follows.follower_id', '=', $my->id)
    ->get('shares.*'); // Notice the shares.* here</code>
Copier après la connexion

Dans cet exemple, nous chargeons avec impatience l'utilisateur qui a partagé chaque publication. Les partages.* sélectionne uniquement les champs de la table des partages, à l'exclusion des tables jointes.

Conclusion

En utilisant la syntaxe de jointure correcte et en tirant parti des relations de modèle éloquentes , vous pouvez récupérer efficacement les données de plusieurs tables dans Laravel. Cette approche vous permet de filtrer et d'accéder facilement à des relations de données 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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!