假设我有:
type A struct {
ID string `gorm:"primary_key"`
Name string
}
type B struct {
ID string `gorm:"primary_key"`
AId string
A A `gorm:"foreignkey:AId"`
Val string
}
如果我想对 A 或 B 进行正常查询,我可以期待 A 或 B 结构返回。但如果我想做一个连接,我应该在 go 中期待什么结构?
例如,如果我的查询是:
select * from a join b on a.id = b.a_id;
GORM 以结构形式返回什么?
最佳答案
转换查询
select * from a join b on a.id = b.a_id;
进入戈尔姆:
db.Tables("a").Select("a.id as aid, a.name as aname, b.id as bid, b.a_id as baid, b.val as bval").Joins("JOIN b ON a.id = b.a_id").Find(&result)
我们可以创建一个临时 result
结构,其中包含表 a
和 b
中的所有字段。
result := []struct {
ID string `db:"aid"`
Name string `db:"aname"`
BId string `db:"bid"`
AId string `db:"baid"`
Val string `db:"bval"`
}{}
然后,根据需要重新打包这个结果结构体,或者返回这个结构体供客户端使用。
关于sql - Gorm复杂查询的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72971372/