Gorm复杂查询的返回值



假设我有:

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结构体返回。但如果我想要连接,我应该期待什么结构?

例如我的查询是:

select * from a join b on a.id = b.a_id;

GORM作为结构返回什么?

转换查询

select * from a join b on a.id = b.a_id;

gorm:

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结构体来存放ab表中的所有字段。

result := []struct {
ID   string `db:"aid"`
Name string `db:"aname"`
BId  string `db:"bid"`
AId  string `db:"baid"`
Val  string `db:"bval"`
}{}

然后,根据需要重新打包这个结果结构体,或者返回这个结构体供客户端使用。

相关内容

  • 没有找到相关文章