go - 关联属于 qor admin

标签 go qor

我有这两个结构:

type Collection struct {
    gorm.Model
    APIKey       string
    CollectionID string
    Name         string
    Environments []Environment
}
type Environment struct {
    gorm.Model
    EnvironmentID string
    Name          string
    Provider      string
    FlightType    string
    ADT           int
    CHD           int
    INF           int
}

主要是这样的:

func main() {
    adminResource := admin.New(&admin.AdminConfig{DB: model.DB})
    adminResource.AddResource(&model.Collection{})
    adminResource.AddResource(&model.Environment{})

    mux := http.NewServeMux()
    adminResource.MountTo("/admin", mux)

    if err := http.ListenAndServe(":8000", mux); err != nil {
        panic(err)
    } else {
        fmt.Println("Listening on: 8000")
    }
}

关键是我不知道是否应该做其他事情来允许 Collection 和 Environemt 之间的一对多成员关系。问题是管理 View 上的表单看起来不错,我可以添加尽可能多的环境...但是提交表单只有 Collection 保存在数据库中.

最佳答案

缺少的是告诉 gorm 另一个模型的外键。

在您的情况下,我们使用 Has Many (gorm Doc) .要定义关系,您必须向结构添加标签:

type Collection struct {
    gorm.Model
    APIKey       string
    CollectionID string
    Name         string
    Environments []Environment `gorm:"foreignkey:EnvironmentID"`
}
type Environment struct {
    gorm.Model
    EnvironmentID string
    Name          string
    Provider      string
    FlightType    string
    ADT           int
    CHD           int
    INF           int
}

如果没有定义其他模型的外键,gorm 将无法匹配这两个模型。作为convention因为主键是 ID 并且您的 Enviroment 没有该字段,所以无法匹配某些内容。请务必阅读有关 conventions 的文档.

关于go - 关联属于 qor admin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51780778/

相关文章:

utf-8 - 如何解压缩 gzip 格式的 []byte 内容,解码时出错

go - 将同一个关键字分发给多个 goroutine

regex - Golang 正则表达式替换什么都不做

Go 授权 header 未发送

go - 如何使 QoR 模型中的字段只读?

mongodb - mongo-go如何使用arrayFilter在 "array of objects inside array of objects"中查找elem