猿问

“有很多”关系给出空结果

我试图定义与 gorm ORM 的一对多关系。我一遍又一遍地阅读所有文档。找不到办法做到这一点。


func GetUser1(c *gin.Context) {

    var user models.User

    var activities models.UserActivity

    query := DB.Debug().Find(&user, 1).Model(&user).Related(&activities).Error

    if query != nil {

        panic(query)

    }

    c.JSON(200, &user)

}

我的模型是..


type User struct {

    Id       int64

    Username string

    Password string `json:"-"`

    Email    string `json:",omitempty"`

    UserActivities []UserActivity

}

type UserActivity struct {

    Id         int64

    UserId     int64 `json:"-"`

    ActorId    int64

    CreatedAt  time.Time

}

调试结果是


[2015-11-21 22:21:54]  [3.17ms]  SELECT  * FROM `users`  WHERE (`id` = '1')

[2015-11-21 22:21:54]  [1.39ms]  SELECT  * FROM `user_activities`  WHERE (`user_id` = '1')

但我得到空结果


{

    "Id": 1,

    "Username": "test1",

    "Email": "test1@friesen.com",

    "UserActivities": null

}

所有的主键和索引都是正确的。我也曾尝试puttingorm:"primary_key"并sql:"index"在UserActivities至今没有运气。但是,如果我替换UserActivities []UserActivity为UserActivities UserActivity然后我只会得到一行似乎是正确的但为什么UserActivities []UserActivity没有给出结果


www说
浏览 163回答 2
2回答

富国沪深

使用 gorm 内置模型 gorm.Model 这样你就不会弄乱“ID”常量

GCT1015

您的问题的解决方案非常简单。而不是查询var user models.Uservar activities models.UserActivityquery := DB.Debug().Find(&user, 1).Model(&user).Related(&activities).Error只是查询var user models.Userquery := DB.Debug().Find(&user, 1).Model(&user).Related(&user.UserActivities).Error
随时随地看视频慕课网APP

相关分类

Go
我要回答