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批注的问题...但是我不确定这是什么错误。
不管我如何尝试使MyDefault1和MyDefault2的Preload进入。无论如何,我总是遇到一个错误,提示它无法预加载。我的猜测是gorm注释并不完全正确...但是它似乎遵循了该模式,因此我不确定现在要看什么。
最佳答案
foriegnkey
→foreignkey
。 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"`
}
关于go - Gorm预紧嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58587949/