go - 在 Golang gorm 中定义关联模型

标签 go go-gorm

我在我的 RestFul 服务中使用 golang gorm,但是,现在我怀疑这可能很简单,但我找不到任何示例或特定文档,我不清楚。

假设我有表 users 和 languages,任何用户都可以有多种语言,任何语言都可以有很多用户,在这种情况下,对于关系数据库建模理论,我们必须创建一个表 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 表的结构?外键是怎么设置的?

最佳答案

how should I define then the structure of the user_languages table?

您还应该描述 user_languages 模型,例如 UserLanguage 等多对多关系

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

也许你应该为 UserLanguage 模型定义主键

how the foreign keys are set there?

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

关于go - 在 Golang gorm 中定义关联模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105380/

相关文章:

go - 是否可以在 golang 中使用反射来获取用户定义类型的基础类型?

go - 将 channel 与 google pubsub 民意调查订阅者一起使用

go - 我应该明确地创建一个与 "Belongs To"或 "Has Many"对称的关系吗?

go - github.com/jinzhu/gorm 和 gorm.io/gorm 有什么区别?

go - 如何在golang中使用gorm通过ssh连接数据库?

go - 完成后,运行/ vert / build /测试命令挂起。忽略中断信号

go - 使用 "go test"列出所有测试用例

go - 属于关联 Golang Gorm 未找到具有显式 ForeignKey

go - 是否应该在每个 CRUD 方法中打开和关闭数据库连接?

go - 保存父项时自动删除子记录