尝试使用 GORM 联接预加载时出现恐慌

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


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


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:password@host.docker.internal: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)

}

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


Cats萌萌
浏览 291回答 1
1回答

慕森卡

根据文档(加入预加载):NOTE 适用于一对一关系,例如:,Join Preloadhas onebelongs to
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go