Maison  >  Article  >  développement back-end  >  Pourquoi Gorm génère-t-il une erreur de clé étrangère malgré des relations de modèle apparemment correctes ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-22 12:24:15180parcourir

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"`
}

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!

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