gpt4 book ai didi

gorm 多对一返回空

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:02 24 4
gpt4 key购买 nike

我想使用 gorm 在我的项目中使用多对一关系。我的 struct 是这样的:

type Book struct {
ID uint
Title string
Subtitle string
Chapters []Chapter `gorm:"foreignkey:BookID;association_foreignkey:ID"`

}

// TableName is book
func (Book) TableName() string {
return "book"
}

// Chapter of books
type Chapter struct {
ID uint
BookID string
Chapter string
}

我想要的是使用以下命令获取一本书的章节:book.chapters。我使用以下代码获取书籍和章节:

var book models.Book
db.First(&book, "id = ?", 4)
fmt.Println(book.ID, book.Chapters) // returns []

当我查询 book_id = 4 的章节时,我得到 11 个结果:

   var chapters []models.Chapter
db.Find(&chapters, "book_id = ? ", 4)
fmt.Println("len(chapters) = ", len(chapters)) // len(chapters) =11

当我设置 db.LogMode(true) 并查看代码中发生的情况时,我发现查询 book 仅查询未加入 chapters 的书籍:

SELECT * FROM "book"WHERE (id = 4) ORDER BY "book"."id"ASC LIMIT 1

文档中是否遗漏了什么?我应该如何使这本书结构化为非空 book.chapters

最佳答案

您的问题可能出在预加载中:http://gorm.io/docs/preload.html#Preload

尝试以下操作:

var book models.Book
db.Preload("Chapters").First(&book, "id = ?", 4)
fmt.Println(book.ID, book.Chapters)

关于gorm 多对一返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56832529/

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