为了账号安全,请及时绑定邮箱和手机立即绑定

gorm 多对一返回空

gorm 多对一返回空

Go
冉冉说 2023-06-26 17:54:47
我想gorm在我的项目中使用多对一关系。我struct的是这样的:type Book struct {    ID          uint    Title       string    Subtitle    string    Chapters    []Chapter `gorm:"foreignkey:BookID;association_foreignkey:ID"`} }// TableName is bookfunc (Book) TableName() string {    return "book"}// Chapter of bookstype 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文档中是否有我遗漏的内容?我应该如何使这本书结构 get 非空book.chapters。
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

您的问题可能出在预加载中,

请尝试以下操作:

var book models.Book

db.Preload("Chapters").First(&book, "id = ?", 4)

fmt.Println(book.ID, book.Chapters)


查看完整回答
反对 回复 2023-06-26
  • 1 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信