Maison > développement back-end > Golang > le corps du texte

Pourquoi Gorm génère-t-il une erreur de clé étrangère malgré des relations de modèle apparemment correctes ?

Susan Sarandon
Libérer: 2024-11-22 12:24:15
original
177 Les gens l'ont consulté

Why Does Gorm Throw a Foreign Key Error Despite Seemingly Correct Model Relationships?

Erreur de clé étrangère dans la relation Gorm

Lors de la tentative de récupération d'un modèle à partir d'une base de données à l'aide de Gorm, un message d'erreur apparaît : "champ invalide trouvé pour les modèles de structure.Le champ Emplacement de ConfigurationDescription, doit définir une clé étrangère valide pour les relations ou doit implémenter l'interface Valuer/Scanner. Cette erreur se produit bien que les modèles de données suivent apparemment les directives de la documentation Gorm.

Les modèles de données donnés définissent une relation Belongs-To entre ConfigurationDescription et LocationDescription. Cependant, la balise de clé étrangère et la balise de références dans la structure ConfigurationDescription semblent être inversées.

Dans un modèle de relation Belongs-To, la balise ForeignKey doit nommer le champ de clé locale du modèle qui rejoint l'entité étrangère. , tandis que la balise references doit nommer la clé primaire ou unique de l'entité étrangère.

Pour résoudre le problème, les balises de la structure ConfigurationDescription doivent être échangées comme suit :

type ConfigurationDescription struct {
    ID         int                 `json:"configurationID"`
    Name       string              `json:"name"`
    IsActive   bool                `json:"isActive"`
    LocationID int                 `json:"-"`
    Location   LocationDescription `json:"location,omitempty" gorm:"foreignKey:ID;references:LocationID"`
}
Copier après la connexion

Une fois ces balises corrigées, Gorm devrait reconnaître correctement la relation entre les deux modèles et récupérer les données avec succès sans rencontrer l'erreur de clé étrangère.

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