戈尔姆协会 .创建()

  • 本文关键字:创建 sqlite go go-gorm
  • 更新时间 :
  • 英文 :


几天前我开始学习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 使用字段名称进行由配置文件模型中的字段名称组成的相关(在您的情况下,例如。TresholdQuality(和关联模型中主键字段的名称(对于"质量"结构为"质量"字段(。您可以使用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
}

相关内容

  • 没有找到相关文章

最新更新