首页  >  文章  >  后端开发  >  尽管模型关系看似正确,为什么 Gorm 会抛出外键错误?

尽管模型关系看似正确,为什么 Gorm 会抛出外键错误?

Susan Sarandon
Susan Sarandon原创
2024-11-22 12:24:15177浏览

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

Gorm 关系中的外键错误

尝试使用 Gorm 从数据库检索模型时,出现错误消息:“无效字段找到 struct models.ConfigurationDescription 的字段 Location,需要为关系定义有效的外键,或者需要实现 Valuer/Scanner 界面。”尽管数据模型看似遵循 Gorm 文档指南,但还是会发生此错误。

给定的数据模型定义了 ConfigurationDescription 和 LocationDescription 之间的“属于”关系。但是,ConfigurationDescription 结构中的外键标记和引用标记似乎颠倒了。

在 Belongs-To 关系模式中,foreignKey 标记应命名连接到外部实体的模型本地键字段,而引用标签应命名外部实体的主键或唯一键。

要解决此问题,ConfigurationDescription 结构中的标签应交换为如下:

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

纠正这些标签后,Gorm 应该可以正确识别两个模型之间的关系并成功检索数据,而不会遇到外键错误。

以上是尽管模型关系看似正确,为什么 Gorm 会抛出外键错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn