我想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)
- 1 回答
- 0 关注
- 139 浏览
添加回答
举报
0/150
提交
取消