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

在 Go GORM 中显示外键的外键

在 Go GORM 中显示外键的外键

Go
MMTTMM 2022-01-10 16:34:11
我能够通过这种情况部分解决这个问题不幸的是,Preload() 函数似乎不适用于深入研究相关对象集。为了澄清,我有以下模型:    type Room struct {        gorm.Model        Name    string        Games   []Game `gorm:"ForeignKey:RoomID"`    }    type Game struct {        gorm.Model        RoomID   int `gorm:"index"`        Players  []Player `gorm:"ForeignKey:GameID"`    }    type Player struct {        gorm.Model        Name   string        GameID int `gorm:"index"`    }当我创建一个包含新房间、游戏和玩家对象的新对象时,我会返回以下数据(json 编码):    {"Value":{"ID":26,"CreatedAt":"2016-05-15T01:21:22.426234189-07:00","UpdatedAt":"2016-05-15T01:21:22.426234189-07:00","DeletedAt":null,"Name":"foo","Games":[{"ID":17,"CreatedAt":"2016-05-15T01:21:22.427026134-07:00","UpdatedAt":"2016-05-15T01:21:22.427026134-07:00","DeletedAt":null,"RoomID":26,"Turns":null,"Players":[{"ID":4,"CreatedAt":"2016-05-15T01:21:22.427560561-07:00","UpdatedAt":"2016-05-15T01:21:22.427560561-07:00","DeletedAt":null,"Name":"TestPlayer","GameID":17}],"Counter":1,"Assigned":false}],"Testing":false},"Error":null,"RowsAffected":1}但是,如果我尝试使用 preload() 函数查询结构,我会得到以下信息:    {"Value":{"ID":26,"CreatedAt":"2016-05-15T01:21:22.426234189-07:00","UpdatedAt":"2016-05-15T01:21:22.426234189-07:00","DeletedAt":null,"Name":"foo","Games":[{"ID":17,"CreatedAt":"2016-05-15T01:21:22.427026134-07:00","UpdatedAt":"2016-05-15T01:21:22.427026134-07:00","DeletedAt":null,"RoomID":26,"Turns":null,"Players":null,"Counter":1,"Assigned":false}],"Testing":false},"Error":null,"RowsAffected":1}请注意,Players 部分现在为空。这是我的房间注册和房间查询功能:    func RegisterRoom(w http.ResponseWriter, r *http.Request) {        err := r.ParseForm()        if err != nil {            // Handle error        }
查看完整描述

1 回答

?
蝴蝶刀刀

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

解决了!答案是在嵌套预压 嫌额头


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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