2016-06-17 3 views
0

играя с 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

ответ

0

После того, как обновилась вчерашняя подача. Все (код, о котором идет речь) работает как документы. :)

Смежные вопросы