duanlan3598 2015-12-16 04:10
浏览 77

Gorm仅在切片中预加载第一个结果

Been using gorm and it's fantastic, the only problem is with the nested preloading it only seems to populate the first result, this is my code:

// Shoutbox msg is the db struct
type ShoutboxMsg struct {
    gorm.Model
    UserID  int `sql:"index"`
    User    User
    Message string
}

// User is the User table in the database
type User struct {
    gorm.Model
    Username     string `sql:"not null;unique"`
    Email        string `sql:"not null;unique"`
    PasswordHash string `sql:"not null;unique"`
    UserLevel    int    `sql:"not null;default:0"`
    Characters   []Characters
    MainPosts    []ForumMainThreadsPosts
    ReplyPosts   []ForumMainPostsReplies
}

// Characters is a table in the database
type Characters struct {
    gorm.Model
    UserID             int    `sql:"index"`
    CharacterName      string `sql:"not null;unique"`
    CharacterServer    string `sql:"not null"`
    CharacterLevel     int    `sql:"not null"`
    CharacterMain      bool   `sql:"not null"`
    CharacterClass     string `sql:"not null"`
    CharacterPic       string `sql:"not null"`
    CharacterSpec      string `sql:"not null"`
    CharacterCSSClass  string `sql:"not null"`
    CharacterTalentImg string `sql:"not null"`
}

then I load it like:

msgs := []ShoutboxMsg{}
db.Preload("User").Preload("User.Characters").Find(&msgs)

But it only populates the first:

msgs[0].User.Characters

-

msgs[1].User.Characters and up all don't have characters but if I do:

for i, msg := range msgs {
    characters := []Characters{}
    db.Model(msg.User).Related(&characters)
    *(&msgs[i].User.Characters) = characters
}

This seems to work fine but does Preload not populate beyond the first result?

Any information would be great thanks.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 2020长安杯与连接网探
    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
    • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
    • ¥16 mybatis的代理对象无法通过@Autowired装填
    • ¥15 可见光定位matlab仿真
    • ¥15 arduino 四自由度机械臂
    • ¥15 wordpress 产品图片 GIF 没法显示
    • ¥15 求三国群英传pl国战时间的修改方法
    • ¥15 matlab代码代写,需写出详细代码,代价私
    • ¥15 ROS系统搭建请教(跨境电商用途)