首页 > 解决方案 > 在 GORM 中使用关联创建记录?

问题描述

我正在做一个项目,对 Golang 来说相对较新。我正在使用GORM我的数据库 ORM。我不知道我做错了什么,但我无法创建带有关联的记录。

type (
    Task struct {
        gorm.Model
        Title       string    `json:"title"`
        Description string    `json:"description"`
        Priority    Priority  `json:"priority_id" validate:"required" gorm:"foreignkey:PriorityID"`
        PriorityID  uint
    }

    Priority struct {
        gorm.Model
        Name      string     `json:"name"`
    }
)

当我这样做时

task := Task{
    Title:       "Test Task!",
    Description: "Test Task Description",
    Priority:    Priority{ID: 1},
}
db.Create(&task)

它向我抛出了这个错误:

[2019-07-27 18:34:35] sql:转换参数 $7 类型:不支持的类型模型。优先级,结构

我查看了GORM Associations,但实际上找不到任何可以使其发挥作用的解决方案。

标签: gogo-gorm

解决方案


Gorm 是 Go 的对象关系映射 (ORM) 框架。要创建具有关联的记录,请使用以下内容:

type (
    Task struct {
        Title       string    `gorm:"column:title"`
        Description string    `gorm:"column:description"`
        PriorityID  int64     `gorm:"column:priority_id"`
        Priority    Priority  `gorm:"foreignkey:PriorityID"`
    }

    Priority struct {
        ID        int64      `gorm:"primary_key"`
        Name      string     `gorm:"column:name"`
    }
)

然后尝试添加


task := Task{
    Title:       "Test Task!",
    Description: "Test Task Description",
    Priority:    Priority{ID: 1},
}
db.Create(&task)

请使用此链接进行参考: Gorm 文档


推荐阅读