假設我有: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"`
}{}
然后,根據需要重新打包這個結果結構,或者返回這個結構給客戶端使用。
- 1 回答
- 0 關注
- 265 瀏覽
添加回答
舉報
0/150
提交
取消