GORM支持的关联查询
- BelongsTo:属于关系
- HasOne:一对一关系
- HasMany:一对多关系
- ManyToMany:多对多关系
一对一关系例子
1.定义User 和 Profile两个模型
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"not null"`
Email string `gorm:"unique;not null"`
// user 关联Profile,一对一关系,代表一个用户有一个,个人描述信息
Profile Profile
}
type Profile struct {
ID uint `gorm:"primaryKey"`
// 存储主表的用户id
UserID uint `gorm:"unique;not null"`
Bio string `gorm:"not null"`
Address string `gorm:"not null"`
}
2.关联查询
var user User
// 根据id查询用户,这里使用Preload预加载Profile个人信息
result := db.Preload("Profile").First(&user, id)
if result.Error != nil {
// 处理错误
}
// user.Profile 包含了关联查询结果
详情,请参考GORM关联查询教程