我在使用 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/