Maison > développement back-end > Golang > Comment récupérer efficacement les données associées dans la relation lieu-ville de GORM ?

Comment récupérer efficacement les données associées dans la relation lieu-ville de GORM ?

Linda Hamilton
Libérer: 2024-12-18 13:40:11
original
885 Les gens l'ont consulté

How to Efficiently Fetch Associated Data in GORM's Place-Town Relationship?

Associations ORM GORM Golang : récupération des champs associés

Dans GORM, un ORM puissant pour Go, vous pouvez créer des associations entre des structures représentant des tables de base de données. Dans ce scénario, vous disposez d'une structure Place associée à une structure Town, où chaque Place appartient à une Ville.

Votre code récupère actuellement tous les enregistrements Place, mais vous souhaitez inclure les informations sur la Ville associées à chaque Place. L'erreur dans votre requête est que la clé étrangère TownID n'est pas spécifiée dans la structure Place.

Pour résoudre ce problème, modifiez la structure Place :

type Place struct {
  ID          int
  Name        string
  TownID      int // The foreign key
  Town        Town
}
Copier après la connexion

Maintenant, vous disposez de plusieurs options pour récupérer les données de Ville associées :

Option 1 : Chargement manuel (non recommandé)

Itérer sur chaque lieu et chargez manuellement la ville associée à l'aide du modèle.Connexe :

places := []Place{}
db.Find(&places)
for i, _ := range places {
    db.Model(places[i]).Related(&places[i].Town)
}
Copier après la connexion

Cette approche, tout en produisant le résultat attendu, souffre du problème "N 1", où plusieurs requêtes de base de données sont émises pour chaque lieu .

Option 2 : Préchargement (recommandé)

Utilisez la fonction Précharger pour charger avec impatience le fichier associé Ville lors de la récupération des enregistrements de lieux :

db.Preload("Town").Find(&places)
Copier après la connexion

Cela déclenchera seulement deux requêtes : une pour récupérer tous les lieux et une pour récupérer toutes les villes associées. Il s'adapte bien au nombre de lieux et de villes.

Résultat attendu :

[{1 Place1  {1 Town1} 1} {2 Place2  {1 Town1} 1}]
Copier après la connexion

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