Go gorm Go Gorm`has many`在匿名字段下不起作用
我是刚来golang gorm的新手,最近遇到了一个与协会有关的问题 我创建的结构是:Go gorm Go Gorm`has many`在匿名字段下不起作用,go-gorm,Go Gorm,我是刚来golang gorm的新手,最近遇到了一个与协会有关的问题 我创建的结构是: type DeliveryItem struct { .......... Targets []TargetType `json:"targets" gorm:"foreignkey:FK"` } 我创建了一个名为TargetType的结构,如下所示: type TargetType struct { name string FK int
type DeliveryItem struct {
..........
Targets []TargetType `json:"targets" gorm:"foreignkey:FK"`
}
我创建了一个名为TargetType的结构,如下所示:
type TargetType struct {
name string
FK int
}
因此,如果我发布了一些具有目标数组的数据,它将首先将数据存储到delivery item表中(但没有目标数据),然后将目标存储到单独的表中。一切都与上述结构一起工作
但是,如果我创建一个匿名字段并将目标
放在匿名字段中,那么gorm不会将这些目标数据插入表中。它似乎无法识别DeliveryItem和TargetType之间的关系
以下是不起作用的示例(为了简单起见,我没有提供确切的代码):
我是否错过了gorm tag让它工作的任何东西,或者gorm不支持这种行为?我查看了gorm文档,它只讨论了我提供的第一个有效的文档,但我只是想知道是否有可能使我的失败案例有效?如果您的失败案例有效,我会感到惊讶,因为基础字段的结构根本不同。运行下面的代码示例可以看到差异
package main
import "fmt"
type DeliveryItemEmbedded struct {
CommonDetails
}
type DeliveryItem struct {
Targets []TargetType `json:"targets" gorm:"foreignkey:FK"`
}
type CommonDetails struct {
Targets []TargetType `json:"targets" gorm:"foreignkey:FK"`
}
type TargetType struct {
name string
FK int
}
func main() {
targets := []TargetType{
TargetType{
name: "target 1",
FK: 2,
},
}
cd := CommonDetails{
Targets: targets,
}
die := DeliveryItemEmbedded{
cd,
}
di := DeliveryItem{
Targets: targets,
}
fmt.Printf("embedded: %+v\n", die)
fmt.Printf("non-embedded: %+v\n", di)
}
给出:
embedded: {CommonDetails:{Targets:[{name:target 1 FK:2}]}}
non-embedded: {Targets:[{name:target 1 FK:2}]}
我不熟悉gorm如何在引擎盖下工作,但如果它能够间接解决CommonDetails问题,我会感到惊讶。不幸的是,我认为在这种情况下,使用嵌入不会对gorm起作用
embedded: {CommonDetails:{Targets:[{name:target 1 FK:2}]}}
non-embedded: {Targets:[{name:target 1 FK:2}]}