小编典典

在Golang gorm中定义关联模型

go

我在RestFul服务中使用了golang gorm,但是,我现在怀疑这很简单,但找不到任何示例或特定文档,这对我来说并不明确。

假设我有表用户和语言,任何用户都可以有多种语言,任何语言都可以有许多用户,在这种情况下,对于关系数据库建模理论,我们必须创建一个表users_languages,并检查gorm,我发现必须使用多对多关系。

现在,我已经有了定义用户和语言表的结构,可以这样说:

type User struct {
    gorm.Model
    Languages         []Language `gorm:"many2many:user_languages;"`
}

type Language struct {
    gorm.Model
    Name string
}

然后,我运行迁移并创建了表User和Language。我的问题是,我该如何定义user_languages表的结构?外键如何设置?


阅读 1263

收藏
2020-07-02

共1个答案

小编典典

我该如何定义user_languages表的结构?

你也应该描述user_languages为类似many2many关系模型User,并Language为例

type UserLanguages struct {
    gorm.Model
    UserId int
    LanguageId int
}

可能应该为UserLanguage模型定义主键

外键如何设置?

GORM会在自己的查询中以下划线格式(如user_idlanguage_id)生成外键名称,为重新定义外键,您可以AssociationForeignKey在模型字段上使用特殊注释,希望对您有所帮助!

2020-07-02