Я хочу использовать 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
.