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

时间:2015-11-21 16:47:23

标签: go one-to-many go-gorm

我试图用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
}

所有主键和索引都是正确的。到目前为止,我还在gorm:"primary_key"尝试了puttin sql:"index"UserActivities没有运气。  但是,如果我将UserActivities []UserActivity替换为UserActivities UserActivity,那么我只会得到一行似乎是正确的,但为什么UserActivities []UserActivity没有给出结果

2 个答案:

答案 0 :(得分:0)

使用模型gorm.Model中内置的gorm,这样你就不会弄乱" ID"恒定

答案 1 :(得分:0)

解决问题的方法非常简单。

而不是质疑

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

只需查询

var user models.User
query := DB.Debug().Find(&user, 1).Model(&user).Related(&user.UserActivities).Error