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