Skip to main content

Many To Many

Many To Many 会在两个模型之间建立一个连接表。

例如,User 和 Language,一个 User 可以说多种 Language,一种 Language 也可以被多个 User 使用。

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

type Language struct {
gorm.Model
Name string
}

当使用 AutoMigrateUser 创建表时,GORM 会自动创建连接表 user_languages

反向引用

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

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

重写外键

type User struct {
gorm.Model
Languages []Language `gorm:"many2many:user_languages;foreignKey:Refer;joinForeignKey:UserRefer;References:ID;joinReferences:LanguageID"`
}

type Language struct {
gorm.Model
Name string
}