我正在做一个项目,对 Golang 还比较陌生。我正在为我的数据库 ORM 使用 GORM
。我不知道我做错了什么,但我无法创建关联记录。
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: converting argument $7 type: unsupported type models.Priority, a struct
我看过GORM Associations但无法真正找到任何可以使其发挥作用的解决方案。
最佳答案
嗨,我想我来晚了,但看看这个错误是优先级结构的问题。
而且我认为您不必提及外键(我假设 gorm 会接受它),因此您可以通过删除外键并让 gorm 选择一个来轻松解决此问题,它应该可以正常工作
这是我的例子
type Task struct {
gorm.Model
Title string
Description string
Priority Priority
PriorityID uint
}
type Priority struct {
gorm.Model
Name string
}
func main() {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
db.AutoMigrate(&Task{}, &Priority{})
task := Task{
Title: "Test Task!",
Description: "Test Task Description",
Priority: Priority{ID: 1},
}
db.Create(&task)
var tasks []Task
db.Joins("Priority").Find(&tasks)
fmt.Println(tasks)
}
关于go - 在 GORM 中创建关联记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57234111/