问题描述
我正在将Golang GORM与psql一起使用。我有一个与模块具有一对一关系的用户对象。用户可以随时更改模块,并且需要这样做,我需要为当前用户更新用户表中的外键。
我试图学习习惯于GORM想要做事的方式,但是在涉及和更新关系方面,一般指南和教程似乎在某些地方停滞了。
db.Model(&User{}).AddForeignKey("module_id","modules(id)","RESTRICT","RESTRICT")
我了解的会在模块表中的用户module_id
列和id
列之间建立关系。
我要在json中发布一个非常简化的module
对象
{
"ID":1
}
我的模块对象看起来像
type Module struct {
gorm.Model
...//more fields here
}
然后将其“关联”到当前用户,我正在做
tmpuser := database.User{
Model: gorm.Model{ID: userId},Module: postedModule,}
最后,我正在为用户设置模块ID为新的
if err := db.Debug().Model(&u).Update("ModuleID",u.Module.ID).Error; err != nil {
log.Println("UpdateTemplateForCampaignById error ",err)
return err
}
我意识到这可以使用原始sql完成,但是我试图了解GORM希望您如何做。
与此相关的问题是,它确实会更新用户表中的module_id
,并且还会清除具有该ID的模块表中的所有数据。
我想,当我在init()
中添加外键并将更新设置为RESTRICT时,它将停止此操作,但是由于某种原因,它仍会清除该条目。
我在做什么错了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)