在 Golang gorm 中定义关联模型
define associative model in Golang gorm
我在我的 RestFul 服务中使用 golang gorm,但是,现在我怀疑这可能很简单,但我找不到任何示例或特定文档,我不清楚。
假设我有 tables 用户和语言,任何用户都可以有多种语言,任何语言都可以有很多用户,在这种情况下,对于关系数据库建模理论,我们必须创建一个 table users_languages,并检查 gorm 我发现我将不得不使用多对多关系。
到现在为止,我已经有了定义用户和语言的结构table,比方说:
type User struct {
gorm.Model
Languages []Language `gorm:"many2many:user_languages;"`
}
type Language struct {
gorm.Model
Name string
}
然后我 运行 迁移和 tables 用户和语言被创建。我的问题是,我应该如何定义 user_languages table 的结构?外键是怎么设置的?
how should I define then the structure of the user_languages table?
您还应该描述 user_languages
模型的多对多关系,例如 User
和 Language
type UserLanguages struct {
gorm.Model
UserId int
LanguageId int
}
也许您应该为 User
和 Language
模型定义主键
how the foreign keys are set there?
GORM 自己生成查询中的外键名称,采用下划线格式(如 user_id
、language_id
),为了重新定义它,你可以在模型字段上使用特殊的 AssociationForeignKey
注释,希望对您有所帮助!
我在我的 RestFul 服务中使用 golang gorm,但是,现在我怀疑这可能很简单,但我找不到任何示例或特定文档,我不清楚。
假设我有 tables 用户和语言,任何用户都可以有多种语言,任何语言都可以有很多用户,在这种情况下,对于关系数据库建模理论,我们必须创建一个 table users_languages,并检查 gorm 我发现我将不得不使用多对多关系。
到现在为止,我已经有了定义用户和语言的结构table,比方说:
type User struct {
gorm.Model
Languages []Language `gorm:"many2many:user_languages;"`
}
type Language struct {
gorm.Model
Name string
}
然后我 运行 迁移和 tables 用户和语言被创建。我的问题是,我应该如何定义 user_languages table 的结构?外键是怎么设置的?
how should I define then the structure of the user_languages table?
您还应该描述 user_languages
模型的多对多关系,例如 User
和 Language
type UserLanguages struct {
gorm.Model
UserId int
LanguageId int
}
也许您应该为 User
和 Language
模型定义主键
how the foreign keys are set there?
GORM 自己生成查询中的外键名称,采用下划线格式(如 user_id
、language_id
),为了重新定义它,你可以在模型字段上使用特殊的 AssociationForeignKey
注释,希望对您有所帮助!