go - 在 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,但实际上找不到任何可以使其发挥作用的解决方案。
解决方案
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 文档
推荐阅读
- here-api - 带有 Trucknopttile 覆盖的路由地图图像 API?(休息)
- c# - 如何在代码文档中正确指定函数可能在 C# 上返回 null?
- activemq - 使用 AMQSource 的 Flink 作业不会生成输出
- c# - 如何从另一个对象中的脚本激活对象上的脚本?
- javascript - Ajax 请求获取错误的 url
- r - 如何从 R 中 PCA 的 ggbiplot 中删除不重要的箭头?
- netlogo - 为什么 NetLogo 创建一个 Blob 而不是一个清晰的形状?
- python - 通过用户输入访问类属性?
- java - 正则表达式 Java 可选字符
- java - 在 Guice 中使用 JukitoRunner/Mockito 的构造函数参数模拟