我有 2 个包含这样数据的结构:
type User struct {
Pics Pic[]
}
type Pic struct {
Id int
UserId int64
}
虽然每次我插入一个用户时,每次我找到用户时,每张图片都会插入到他们的表格中,但不会填充图片:
var users []User
db.Limit(pagesize).Where("updated_at > ?", date).Find(&users)
我做错了什么吗?
最佳答案
你的模型(结构)并没有真正意义,因为 User
有一个 Pic
数组表示一个“一对多”的用户到图片的关系,但是你的用户有没有 id 属性本身,因此不能与 Pic
表上的项目相关。
User 应该有一个属性 Id
,这将是它的主键,UserId
是 Pic 上与其相关的外键。如果这两个表/实体之间没有“关系”,您就无法通过查询用户返回图片。
我不确定你需要做些什么才能让你的代码正常工作,因为这个例子是不完整的,但你首先需要的是一个 Id
属性,你应该用 gorm 将它指定为 Primarykey注释。您还应该在 Pic 结构上添加注释,说明 UserId 是外键,而 Id 是它的主键。
此外,仅供引用,您的数组未嵌入。嵌入是一种您未使用的语言功能,如果您嵌入它没有名称的属性,并且可以直接从嵌入类型的实例访问它的属性。
关于go - 如何用 gorm 填充和嵌入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28994759/