为了账号安全,请及时绑定邮箱和手机立即绑定

gorm使用update更新数据库(postgresql)布尔值?

gorm使用update更新数据库(postgresql)布尔值?

喵喵时光机 2018-07-09 06:14:45
问题描述 :今天早上遇到的问题,一上午了,还是没有找出来是什么问题。特来问问目的:使用gorm修改数据库表中的某个字段的布尔值先上代码:func ChangeActive(id int) (*models.Comment, error) {    var (         model     *models.Comment         pre_model models.PreComment         err       error     )    //先将需要修改的数据查询出来     err = common.DB.Where("id = ?", id).First(&model).Error     if err != nil {         return nil, err     }    //将布尔值取反     model.IsActive = !model.IsActive     //更新数据库的值     common.DB.Model(&model).Updates(&model)    if !model.IsActive {         pre_model.Create(common.DB)     }     return model, err }此函数接收一个ID,在数据库查询出ID对应的数据,修改这条数据的active字段将它取反。最后再更新数据库。遇到的Bug:布尔值一直更新不过来。排查过程:起初我以为是代码语句哪里写错了,就使用了goland的Debug模式,发现代码并没有问题。接下来我就验证:将代码在更新数据表之前修改了另外一个字段(model.CompanyID = 3)查看是否修改成功。结果是修改成功,但是布尔值还是没变。
查看完整描述

1 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

  • 如果是零值,那么Updates方法就不会更新这字段,而布尔值的零值是false

  • 办法一: 把属性从bool改为*bool

  • 办法二: 使用其他的update方法。


查看完整回答
反对 回复 2018-07-15
  • 1 回答
  • 0 关注
  • 2630 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信