играя с golang Гормом ОРМОМ, у меня есть следующая проблема понимания:Горм нагрузки, связанная с данными
Моя модель выглядит следующим образом:
package models
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite"
)
type Book struct {
gorm.Model
Title string `gorm:"size:255;not null;"`
Desctiption string
Tags []Tag `gorm:"many2many:book_tags;"`
}
type Tag struct {
ID int
Name string
}
Я использую это в моем контроллере Ревел, как это:
import (
"github.com/foobar/myrevel/app/models"
"github.com/revel/revel"
)
type Book struct {
GormController
}
func (c Book) Books() revel.Result {
books := &[]models.Book{}
// don't loads tags
//Gdb.Order("id desc").Find(&books)
// don't loads tags
Gdb.Preload("Tags").Order("id desc").Find(&books).Related("Tags")
return c.Render(books)
}
таблиц БД есть: книги, теги и book_tags Создать с кодом первой, вставляя работает отлично.
func (c Book) InsertTestData() revel.Result {
book := &models.Book{
Title: "Hello Go lang",
Desctiption: "The bueaty of golang",
Tags: []models.Tag{{Name: "Golang"}, {Name: "Go"}},
}
Gdb.NewRecord(&book)
Gdb.Create(&book)
}
Ах и код вида:
<tbody>
{{range .books}}
<tr>
<td>{{.Title}}</td>
<td>
{{.Desctiption}}<br />
{{range .Tags}}
{{.Name}}
{{end}}
</td>
</tr>
{{end}}
</tbody>
В Горме документах он говорит:
db.Model(&user).Related(&emails)
//// SELECT * FROM emails WHERE user_id = 111; // 111 is user's primary key
http://jinzhu.me/gorm/associations.html#many-to-many
Метка всегда пустая итерация над книгами работают отлично. К нему (недопустимая ассоциация []), но работает для книг.
Где ошибка и как это сделать правильно?
Спасибо за ваше время и помощь.
Cheers