golang gorm 三个表相交查询 Related如何使用?

关联查询,三个表:

type Record struct {
    Id          int           `json:"id"`
    RecordUsers []*RecordUser `json:"record_users" gorm:"foreignKey:RecordId"`
}

type RecordUser struct {
    Id       int    `json:"id"`
    UserId   int    `json:"user_id"`
    RecordId int    `json:"record_id"`
    Record   Record `json:"record" gorm:"foreignKey:RecordId"`
}

type User struct {
    Id       int    `json:"id"`
    UserName string `json:"user_name"`
}
Record 一对多 RecordUser
RecordUser 一对一 User

想通过查询一条记录的时候同时交表查询到 User.UserName.

var model Record
db.Model(&Record{}).Preload("RecordUser").Find(&model)

上面这个只能查询到之后,去查 record_user,但不能再通过 record_user.user_id 的值去查 user表的数据,以此来获得 user_name 字段值。

select * from records;
select * from record_users where record_id in (1,2,3 ...)

如何写法可以再加入:

select * from users where id in (11,12,13,14) ... 
阅读 3.4k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题