首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Go-Gorm `有很多`在匿名字段下不起作用

Go-Gorm `有很多`在匿名字段下不起作用
EN

Stack Overflow用户
提问于 2019-10-12 03:18:31
回答 1查看 72关注 0票数 0

我刚接触golang gorm,最近遇到了一个协会的问题。

我创建的结构是:

代码语言:javascript
运行
复制
type DeliveryItem struct {
  ..........
  Targets  []TargetType     `json:"targets" gorm:"foreignkey:FK"`
}

我创建了一个名为TargetType的结构,如下所示:

代码语言:javascript
运行
复制
type TargetType struct {
    name            string
    FK      int             
}

因此,如果我发布了一些具有目标数组的数据,它将首先将数据存储到delivery item表中(但没有目标数据),然后将目标存储到一个单独的表中。所有的东西都与上面的结构一起工作。

但是,如果我创建一个匿名字段并将Targets放在匿名字段中,那么gorm不会将这些目标数据插入到表中。看起来它不能识别DeliveryItem和TargetType之间的关系

以下是不起作用的示例(为了简单起见,我没有提供确切的代码):

代码语言:javascript
运行
复制
type DeliveryItem struct {
  ..........
  CommonDetails 
}

type CommonDetails struct {
  ................
  Targets  []TargetType     `json:"targets" gorm:"foreignkey:FK"`
}

type TargetType struct {
    name            string
    FK      int             
}

我是不是错过了让gorm标签工作的任何东西,或者Gorm不支持这样的行为?我查看了gorm文档,它只谈到了我提供的第一个工作,但我只想让我失败的案例工作吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-12 06:20:36

如果你的失败案例可以工作,我会很惊讶,因为底层字段的结构是根本不同的。运行下面的代码示例,您可以看到不同之处。

代码语言:javascript
运行
复制
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)
}

提供:

代码语言:javascript
运行
复制
embedded: {CommonDetails:{Targets:[{name:target 1 FK:2}]}}
non-embedded: {Targets:[{name:target 1 FK:2}]}

我不熟悉gorm是如何在幕后工作的,但如果它能够间接解决CommonDetails问题,我会感到惊讶。不幸的是,在这种情况下,我不认为使用嵌入可以与gorm一起工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58347294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档