HasMany
HasMany标签用于定义一对多关系的“拥有”模型。例如,我们可以将一个User模型与一个Article模型相关联,使得每个用户可以拥有多篇文章。在这种情况下,User模型将具有一个Articles字段,用于存储其所有文章。我们可以使用以下代码来定义User模型的HasMany关系:
代码语言:javascript复制type User struct {
gorm.Model
Name string
Articles []Article
}
type Article struct {
gorm.Model
Title string
Content string
UserID uint
User User `gorm:"foreignKey:UserID"`
}
在上述代码中,我们首先定义了一个User模型,并将其与一个Article模型相关联。接着,我们定义了一个Article模型,并将其与User模型相关联。最后,我们通过将Article模型中的User字段与User模型的ID字段相关联,将两个模型关联起来。
ManyToMany
ManyToMany标签用于定义多对多关系的关联表。例如,我们可以将一个User模型与一个Role模型相关联,使得每个用户可以拥有多个角色,每个角色也可以被多个用户拥有。在这种情况下,我们需要创建一个关联表,用于存储用户与角色之间的关系。我们可以使用以下代码来定义User模型的ManyToMany关系:
代码语言:javascript复制type User struct {
gorm.Model
Name string
Roles []Role `gorm:"many2many:user_roles;"`
}
type Role struct {
gorm.Model
Name string
Users []User `gorm:"many2many:user_roles;"`
}
在上述代码中,我们首先定义了一个User模型,并将其与一个Role模型相关联。接着,我们定义了一个Role模型,并将其与User模型相关联。最后,我们使用gorm:"many2many:user_roles;"
标签将两个模型与一个名为“user_roles”的关联表相关联。