go - 如何更新多对多关系

标签 go go-gorm

我在使用 go orm gorm 时遇到了困难:

我有这样的结构:

type Data struct {
  gorm.Model
  UserID   int `json:"user_id,omitempty"`
  AnswerID int `json:"answer_id,omitempty"`
  Entities []Entity `gorm:"many2many:data_entities;"`
}

type Entity struct {
  gorm.Model
  Name string
}

现在,如果我这样做:

db.Model(&data).Where(Data{AnswerID: data.AnswerID}).Assign(&data).FirstOrCreate(&data)

或者

db.Model(&data).Where(Data{AnswerID: d.AnswerID}).Update(&data)

我的多对多字段未更新但已创建...如果已存在则导致重复。

如果我尝试使用 Related() 函数,它只会停止更新外部字段。

有没有办法正确更新或创建每个链接的表?

最佳答案

我是这样做的:

要更新您的数据,只需传递一个仅包含您要更新的字段的结构:

db.Model(&data).Updates(Data{UserID: 2, AnswerID: 2})

并添加新实体:

db.Model(&data).Association("Entities").Append([]*Entity{&Entity{Name: "mynewentity"}})

关于go - 如何更新多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47871117/

相关文章:

go - 如何在golang中写入已经打开的FD

reactjs - 如何使用 Golang Gorilla/mux 托管并发 websocket 连接?

go - 尝试使用 GORM 连接预加载时出现 panic

go - 属于关联 Golang Gorm 未找到具有显式 ForeignKey

postgresql - 维护同一行的并发更新的完整性

go - 如何在 Golang 中计算嵌套/迭代 MD5 哈希?

testing - 测试中的静态文件

database - 使用 ORM 模型而不是正确的数据库建模

go - Go 中的类型转换结构是无操作的吗?

go - 如何使用搜索到的数据编写响应-Goswagger和Gorm