登录
首页 >  Golang >  Go问答

Gorm 预加载嵌套结构

来源:stackoverflow

时间:2024-04-16 23:18:30 261浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Gorm 预加载嵌套结构》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

type mainstruct struct {
defaults
foo string
bar string
baz int64
struct1  mystruct1 `gorm:"foreignkey:mainstructid"`
}
type mystruct1 struct {
    defaults
    mainstructid int64                  `json:"-"`       
    id1          int64                  `json:"-"` 
    id2         int64                   `json:"-"` 
    mydefault1     mystruct2 `gorm: "foriegnkey:id;association_foreignkey:id1"`
    mydefault2    mystruct2 `gorm: "foriegnkey:id;association_foreignkey:id2"`
}
type mystruct2 struct {
    defaults
    field1              string
    field2           string
    field3          string
}

鉴于上述结构,我想做一些类似的事情

baseVersion MainStruct
db.Where("ID = ?", myInputID).Preload("Struct1").
        Preload("Struct1.MyDefault1").
        Preload("Struct1.MyDefault2").
        First(&baseVersion)

我当前遇到的问题是我根本没有从 struct2 取回数据。我认为这是 struct1 中创建关联的 gorm 注释的问题...但我不确定出了什么问题。

无论我如何尝试让 preload od mydefault1 和 mydefault2 进入。我总是会遇到无法预加载的错误。我的猜测是 gorm 注释并不完全正确......但它似乎遵循模式,所以我不知道现在该看什么。


解决方案


  • mystruct1 中存在拼写错误:foriegnkeyforeignkey
  • mystruct1 的标记值中存在多余空格。

这些原因使得gorm无法分析mystruct1的关系。

type MyStruct1 struct {
    Model
    MainStructID int64     `json:"-"`
    ID1          int64     `json:"-"`
    ID2          int64     `json:"-"`
    MyDefault1   MyStruct2 `gorm:"foreignkey:ID;association_foreignkey:ID1"`
    MyDefault2   MyStruct2 `gorm:"foreignkey:ID;association_foreignkey:ID2"`
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>