gpt4 book ai didi

sqlite - GORM 关联 .Create()

转载 作者:数据小太阳 更新时间:2023-10-29 03:18:43 25 4
gpt4 key购买 nike

我几天前开始学习 go,我正在尝试使用 go 和 gorm 构建一个 REST API 以实现数据持久化。我正在构建一个电影管理 API,并且我有一些配置文件可以将质量和语言关联起来。

type Profile struct {
gorm.Model
ThresholdQuality Quality `json:"thresholdQuality" validate:"required"`

PreferredLanguage Language `json:"preferredLanguage" validate:"required"`
}

type Language struct {
Language string `json:"language" gorm:"primary_key"`
}

type Quality struct {
Quality string `json:"quality" gorm:"primary_key"`
}

在数据库中创建

func InitDb(){
var err error
DB, err = gorm.Open("sqlite3", "gotorro.db")
if err != nil {
fmt.Printf("%s",err)
panic("failed to connect database.")
}
DB.AutoMigrate(&Movie{})
DB.AutoMigrate(&Quality{})
DB.AutoMigrate(&Language{})
DB.AutoMigrate(&Profile{})

french := Language{Language:"french"}
english := Language{Language:"english"}

DB.Create(&french)
DB.Create(&english)

profile := Profile{
ThresholdQuality: Quality{"1080p"},
PreferredLanguage: Language{"french"},
}

DB.Create(&profile)
}

当通过 sqlite 查看我的数据库时,语言和质量已成功创建

sqlite> select * from qualities ;
1080p
720p
sqlite> select * from Languages ;
french
english

但是当我创建个人资料时,品质和语言仍然是空的

sqlite> select * from profiles;

12|2019-07-25 09:54:44.165365026-04:00|2019-07-25 09:54:44.165365026-04:00|||||

根据 gorm 文档,我的配置文件应该包含质量和语言的外键。

我错过了什么?

最佳答案

在您的配置文件模型中,您需要创建用于存储相关模型外键的字段。所以你的个人资料模型应该是这样的

type Profile struct {
gorm.Model
ThresholdQuality Quality `json:"thresholdQuality" validate:"required"`
ThresholdQualityQuality string
PreferredLanguage Language `json:"preferredLanguage" validate:"required"`
PreferredLanguageLanguage string
}

默认情况下,gorm 使用字段名称来表示由 Profile 模型中的 FieldName 组成的关系(在您的情况下,例如 TresholdQuality)和关联模型中的主键字段名称(对于 Quality 结构是 Quality 字段)。您可以使用 gorm:"foreignkey" 标签更改它,然后您的配置文件看起来像这样

type Profile struct {
gorm.Model
ThresholdQuality Quality `gorm:"foreignkey:ThresholdQualityID" json:"thresholdQuality" validate:"required"`
ThresholdQualityID string
PreferredLanguage Language `gorm:"foreignkey:PreferredLanguageID" json:"preferredLanguage" validate:"required"`
PreferredLanguageID string
}

关于sqlite - GORM 关联 .Create(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57204011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com