Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gorm只是预加载切片中的第一个结果_Go_Go Gorm - Fatal编程技术网

Gorm只是预加载切片中的第一个结果

Gorm只是预加载切片中的第一个结果,go,go-gorm,Go,Go Gorm,一直在使用gorm,这太棒了,唯一的问题是嵌套的预加载似乎只填充了第一个结果,这是我的代码: // 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
,这太棒了,唯一的问题是嵌套的
预加载
似乎只填充了第一个结果,这是我的代码:

// 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"`
}
然后我像这样加载它:

msgs := []ShoutboxMsg{}
db.Preload("User").Preload("User.Characters").Find(&msgs)
但它只会填充第一个:

msgs[0]。用户。字符

-

msgs[1]。User.Characters
及以上都没有字符,但如果有:

for i, msg := range msgs {
    characters := []Characters{}
    db.Model(msg.User).Related(&characters)
    *(&msgs[i].User.Characters) = characters
}
这似乎工作正常,但是
Preload
是否在第一个结果之外不填充

任何信息都非常感谢。

检查此问题:检查此问题: