Comment utiliser la relation HasManythrough à 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.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

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

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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ù

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-

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

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

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,

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

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

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
