go - 如何用 gorm 填充和嵌入数组?

标签 go go-gorm

我有 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/

相关文章:

go - 对接口(interface)进行类型断言,内部发生了什么

asynchronous - 使用 goroutines WaitingGroup 时随机发生错误

regex - golang正则表达式获取包含搜索字符的字符串

java - 如何将这个 Java 正则表达式转换为 Go 的正则表达式语法?

parsing - 如何将分隔字符串解析为子字符串片段?

postgresql - 为什么gorm postgresql在“)”处或附近抛出pq:语法错误?

go-gorm - 如何在 GORM 中引用复合主键?

sql-server - 无法使用 GORM : reflect: call of reflect. Value.Interface on zero Value 将记录批量插入到 MSSQL DB 中

go - 如何使用GORM为归一化表格进行适当的模型关联?

mysql - 乱码 : json of json not work