gorm 多对一 returns 空
gorm many to one returns empty
我想 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
:[=22 的书籍=]
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
在我的项目中使用多对一关系。
我的 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
:[=22 的书籍=]
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)