我试图用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
没有给出结果
答案 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