Table des matières
Comprendre la structure relationnelle
Exemple de structure de table de la base de données
Mettre en place la relation éloquente
Utiliser la relation dans la pratique
Maison cadre php Laravel Comment utiliser la relation HasManythrough à Laravel?

Comment utiliser la relation HasManythrough à Laravel?

Sep 17, 2025 am 06:38 AM
laravel

Un pays peut accéder à tous les publications par le biais d'utilisateurs en utilisant HasManythrough. Par exemple, avec les pays, les utilisateurs et les tables de publication liés par des clés étrangères, le modèle de pays définit une relation de plusieurs chariots pour publier via l'utilisateur, permettant une récupération de données indirecte efficace sur deux relations un à plusieurs dans une seule requête.

Comment utiliser la relation HasManythrough à Laravel?

La relation HasManythrough dans Laravel vous permet d'accéder à des modèles liés à distance via un modèle intermédiaire. Il est utile lorsque vous souhaitez récupérer des données à partir d'un modèle à deux niveaux via un modèle intermédiaire.

Comprendre la structure relationnelle

Par exemple, considérez trois modèles: pays , utilisateur et post . Un pays compte de nombreux utilisateurs et chaque utilisateur a de nombreux publications. Avec hasManyThrough , vous pouvez obtenir tous les publications appartenant aux utilisateurs d'un pays spécifique - même si le pays ne possède pas de publications directement.

hasManyThrough de Laravel fonctionne comme une relation "pass-through". Il ne nécessite pas de table pivot car il traverse deux relations uniques simples.

Exemple de structure de table de la base de données

  • Pays : ID, Nom
  • Utilisateurs : ID, country_id, Nom
  • Posts : id, user_id, titre

Dans cette configuration:

  • Chaque utilisateur appartient à un pays (via country_id )
  • Chaque message appartient à un utilisateur (via user_id )
  • Vous pouvez utiliser hasManyThrough sur le pays pour obtenir tous les publications via les utilisateurs

Mettre en place la relation éloquente

Dans votre modèle de pays :

Le pays de classe étend le modèle
{
    Postes de fonction publique ()
    {
        Retour $ this-> HasManythrough (
            Post :: Class, // Modèle final auquel vous souhaitez accéder
            Utilisateur :: Classe, // Modèle intermédiaire
            'country_id', // clé étrangère sur la table des utilisateurs (pointe vers le pays)
            'user_id', // touche étrangère sur la table des messages (pointe vers l'utilisateur)
            'id', // clé locale sur table des pays
            'id' // clé locale sur la table des utilisateurs
        ));
    }
}

Les paramètres de hasManyThrough() sont:

  • Post :: Classe - Le modèle cible
  • Utilisateur :: Classe - Le modèle intermédiaire
  • Country_id - clé étrangère sur la table intermédiaire ( users )
  • user_id - clé étrangère sur la table finale ( posts )
  • ID - clé primaire sur le tableau local ( countries )
  • ID - Clé primaire sur la table intermédiaire ( users )

Les deux derniers paramètres sont facultatifs si vous utilisez les conventions de Laravel par défaut (comme id comme clés primaires).

Utiliser la relation dans la pratique

Une fois défini, vous pouvez récupérer des messages dans un pays:

$ country = country :: trouver (1);
$ Posts = $ country-> postes;

foreach ($ messages comme $ post) {
    Echo $ post-> titre;
}

Cela exécutera une seule requête SQL à l'aide d'une jointure pour extraire tous les articles où l'utilisateur associé appartient au pays donné.

Il est également possible d'ajouter des contraintes:

$ récentPosts = $ country-> poters () -> où ('créé_at', '> =', maintenant () -> subweek ()) -> get ();

Fondamentalement, hasManyThrough est propre et efficace lorsque vous avez besoin d'un accès indirect sur deux relations unidirectionnelles. Assurez-vous simplement que vos clés étrangères sont correctement mappées et que le flux de données est logique.

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 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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment utiliser Eloquent dans Laravel Comment utiliser Eloquent dans Laravel Aug 21, 2025 pm 02:30 PM

Créer des modèles et la migration: utilisez PhPartisanMake: ModelPost-M pour générer des modèles et des fichiers de migration, définissez la structure du tableau et exécutez PhPartisanMigrate; 2. 3. Utiliser une association éloquente: définir l'appartenance et les relations HasMany dans le modèle, et utilisez la méthode avec () pour précharger les données associées pour éviter les problèmes de requête n 1; 4. Requête éloquente: utilisez le constructeur de requête pour des appels de chaîne tels que où

Comment utiliser la planification des tâches de Laravel Comment utiliser la planification des tâches de Laravel Aug 31, 2025 am 06:07 AM

Le système TaskSCheduling de Laravel vous permet de définir et de gérer les tâches de synchronisation via PHP, sans éditer manuellement le serveur Crontab, vous n'avez qu'à ajouter une tâche CRON qui est exécutée une fois par minute au serveur: * CD / PATH-TOT-YOUR-YOUR-YOUR-YOUR-YOUR-YOUR-YOUR-YOUR-YOUR-YOUR-YOUR-TROject && phpartisanschedule: Exécuter >> / Dev / Null2> & 1, et ensuite les tâches sont configurées dans la méthode de la programmation de l'accident \ Kernl; 1. La définition des tâches peut utiliser des méthodes de commande, d'appel ou d'exécution, telles que $ calendrier-

Comment créer un réseau social avec Laravel Comment créer un réseau social avec Laravel Sep 01, 2025 am 06:39 AM

Oui, YouCancreatEasocialNetworkwithLaravelByFollowingTheSestests: 1.SetUpLaraveLusingComposer, Configurethe.envfile, pertinentAuthenticationViabeze / Jetsstream / Fortify, andrunmigrationsforUserManagement.2

Comment travailler avec les relations polymorphes à Laravel Comment travailler avec les relations polymorphes à Laravel Aug 25, 2025 am 10:56 AM

PolymorphicRelationshipSinLaravelallowamodellikEcommentorimagetobelongTomultipleModelsSuchaspost, vidéo, OruserUsingAingLinsEassociation.2.Thedatabaseschemarequires {relation} _idand {relation} _TypeinacoMn, eXEMPLIBudcuMeMment_idandcunable_typeinacoMnus, EXEMPLIBUDAMENTALE_DANDANMETALAGE_

Comment créer un backend d'application mobile avec Laravel Comment créer un backend d'application mobile avec Laravel Sep 02, 2025 am 08:34 AM

L'utilisation de Laravel pour créer un backend mobile nécessite d'abord d'installer le cadre et de configurer l'environnement de la base de données; 2. Définissez les routes API dans Routes / API.php et renvoyez une réponse JSON à l'aide du contrôleur de ressource; 3. Implémentez l'authentification de l'API via Laravelsanctum pour générer des jetons pour le stockage mobile et l'authentification; 4. Vérifiez le type de fichier lors du téléchargement de fichiers et stockez-le sur le disque public, et créez des liens souples pour un accès externe; 5. L'environnement de production nécessite HTTPS, définir les limites de courant, configurer les COR, effectuer le contrôle de la version API et optimiser la gestion des erreurs. Il est également recommandé d'utiliser les ressources API, la pagination, les files d'attente et les outils de documents API pour améliorer la maintenabilité et les performances. Utilisez Laravel pour construire un coffre-fort,

Comment internationaliser une application Laravel Comment internationaliser une application Laravel Aug 22, 2025 pm 02:31 PM

Créer des fichiers linguistiques: créer des sous-répertoires pour chaque langue (tels que EN, ES) dans le répertoire Resources / Lang et ajouter des fichiers messages.php, ou utiliser le fichier JSON pour stocker la traduction; 2. Définir le langage de l'application: Lisez l'en-tête de demande Accept-Language via le middleware ou détectez le langage via un préfixe d'URL, définissez la langue actuelle à l'aide d'App () -> setLocale () et enregistrez le middleware dans kernel.php; 3. Utilisez des fonctions de traduction: utilisez __ (), trans () ou @lang dans la vue pour obtenir le contenu de traduction, et il est recommandé d'utiliser __ () qui prend en charge le secours; 4. Paramètres de soutien et pluriel: Utilisez les espaces réservés dans les chaînes de traduction telles que: n

Comment enregistrer les messages dans un fichier dans Laravel? Comment enregistrer les messages dans un fichier dans Laravel? Sep 21, 2025 am 06:04 AM

LaravelsesMonologTologMessagesViathelogFacade, avec DefaultLogsStoredInstorage / Logs / Laravel.log.ConfigureChannelsInConfig / Logging.PhptoControloutput

Comment implémenter une fonctionnalité 'Remember Me' dans Laravel Comment implémenter une fonctionnalité 'Remember Me' dans Laravel Aug 31, 2025 am 08:53 AM

Assurez-vous qu'il existe une colonne Remember_token dans la table utilisateur. La migration par défaut de Laravel comprend déjà ce champ. Sinon, il sera ajouté par migration; 2. Ajoutez une case à cocher avec le nom Rappelez-vous dans le formulaire de connexion pour fournir l'option "Remember Me"; 3. Passez le paramètre Remember à la méthode AUTH :: TUT () pendant l'authentification manuelle pour activer la connexion persistante; 4. "Remember Me" dure 5 ans par défaut et peut être personnalisé via l'élément de configuration Remember_For dans config / auth.php; 5. Laravel invalide automatiquement Remember_Token lorsque le mot de passe change ou les suppressions de l'utilisateur. Il est recommandé d'utiliser HTTPS pour assurer la sécurité dans l'environnement de production; 6

See all articles