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中文网其他相关文章!