gpt4 book ai didi

go - 尝试使用 GORM 连接预加载时出现 panic

转载 作者:行者123 更新时间:2023-12-03 08:16:56 26 4
gpt4 key购买 nike

我正在尝试使用 go 创建一个简单的 REST API 作为学习项目。我在尝试使用 GORM 的 Joins 预加载功能填充 has Many 关系时遇到了障碍。

据我所知,我已经正确设置了关系,数据库中的表结构看起来不错并且记录已插入,但以下代码会产生错误:

panic: reflect: call of reflect.Value.Field on slice Value

我在这里制作了一个最小的示例来显示我的问题

package main

import (
"log"

"gorm.io/driver/postgres"
"gorm.io/gorm"
)

type Page struct {
gorm.Model
Text string
BookID uint
}

type Book struct {
gorm.Model
Pages []Page
}

func main() {
db, err := gorm.Open(postgres.Open("postgres://postgres:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4434253737332b3620042c2b37306a202b272f21366a2d2a3021362a2528" rel="noreferrer noopener nofollow">[email protected]</a>:5432/postgres"), &gorm.Config{})
if err != nil {
log.Fatal(err.Error())
}
db.AutoMigrate(&Book{})
db.AutoMigrate(&Page{})
db.Create(&Book{
Pages: []Page{
{Text: "Page One"},
},
})
result := []Book{}
// errors here
db.Joins("Pages").Find(&result)

// works fine
// db.Preload("Pages").Find(&result)
}

任何关于我出错的地方的指导将不胜感激,全新的。

最佳答案

根据文档(Joins Preloading):

NOTE Join Preload works with one-to-one relation, e.g: has one, belongs to

关于go - 尝试使用 GORM 连接预加载时出现 panic ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69073133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com