关联查询,三个表:
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) ...
直接拼sql吧