为了账号安全,请及时绑定邮箱和手机立即绑定

Gorm复杂查询的返回值

Gorm复杂查询的返回值

Go
忽然笑 2023-01-03 14:11:59
假设我有: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 作为结构体返回什么?
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

转换查询


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结构来容纳来自表a和b.


result := []struct {

    ID   string `db:"aid"`

    Name string `db:"aname"`

    BId  string `db:"bid"`

    AId  string `db:"baid"`

    Val  string `db:"bval"`

}{}

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


查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 321 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号