Maison >base de données >tutoriel mysql >Comment récupérer des relations imbriquées dans Laravel : accéder aux personnes abonnées à un événement sur plusieurs tables intermédiaires ?

Comment récupérer des relations imbriquées dans Laravel : accéder aux personnes abonnées à un événement sur plusieurs tables intermédiaires ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-17 02:38:03579parcourir

How to Retrieve Nested Relationships in Laravel: Accessing Persons Subscribed to an Event Across Multiple Intermediary Tables?

Relations imbriquées dans Laravel

Les relations imbriquées vous permettent d'accéder à des modèles qui se trouvent à plusieurs niveaux en profondeur dans votre structure de données. Cela peut être un défi à réaliser dans Laravel, surtout avec des relations complexes.

Énoncé du problème :

Récupérer une liste de personnes inscrites à un événement, malgré plusieurs tables intermédiaires entre les modèles d'événement et de personne.

Structure de la base de données :

Le La structure de la base de données implique les tables suivantes : événements, villes, entreprises et personnes.

Relations modèles :

  • Événement : appartient à la ville
  • Ville : a de nombreuses entreprises, a de nombreux événements
  • Entreprise : appartient à la ville, a de nombreux Personnes
  • Personne : appartient à l'entreprise, appartient à de nombreux événements (via EventScore)

Tentatives infructueuses :

Tentatives d'utilisation avec( ) et les méthodes WhereHas() n'ont pas produit le résultat souhaité résultat.

Solution :

Pour résoudre ce problème, utilisez la requête suivante :

return Event::with('city.companies.persons')->get();

Cette requête charge avec impatience la ville, les entreprises, et les personnes associées à l'événement.

Alternativement, si vous souhaitez sélectionner uniquement des champs spécifiques parmi les personnes table :

return Event::with(['city.companies.persons' => function ($query) {
    $query->select('id', '...');
}])->get();

Cette approche garantit que seuls les champs spécifiés sont récupérés, optimisant ainsi la requête.

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!

Déclaration:
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