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

发布于 2022-09-12 23:16:45 字数 1028 浏览 24 评论 0

关联查询,三个表:

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) ... 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

廻憶裏菂餘溫 2022-09-19 23:16:45

直接拼sql吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文