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

孙外键..

孙外键..

Go
慕森卡 2022-07-11 17:15:16
我在 Go 中创建了一个 rest 应用程序,并将 GORM 用于我的 orm。到目前为止,我已经成功地实现了所有东西,但是我现在想为我的模型添加一些更多的细节,以使前端应用程序更容易。这将添加“孙子”外键(想不出更好的称呼)。我在文档中看不到任何关于此的内容,但实际上我想要的是以下内容:type Map struct{    Id int `gorm:"primaryKey"`    Buildings []Building `gorm:"references:Id"`}type Building struct{    Id int  `gorm:"primaryKey"`    MapId int    Floors []Floor `gorm:"references:Id"`}type Floor struct{    Id              int `gorm:"primaryKey"`    BuildingId      int    MapId           int }澄清一下,我不确定如何将地图 ID 获取到 Floor 结构的数据库中,并且从阅读文档中我似乎无法找到这样做的方法,如果有人可以链接到某些文档或示例太好了,请注意:我不想只在 ID 内保存地图实例。
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

为将来发现此问题的人提供答案:


在 GORM git 页面(https://github.com/go-gorm/gorm/issues/3788)上发布后,我被定向到钩子:https ://gorm.io/docs/hooks.html#Hooks


我解决这个问题的代码是为每个子级别 wgere 使用 before create 然后在子结构列表上迭代设置适当的值,如下所示:


func (building *Building) BeforeCreate(tx *gorm.DB) (err error){

    for i := 0; i < len(building.Floors); i++ {

        building.Floors[i].MapId = building.MapId

    }

    return

}


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信