问题描述 :
今天早上遇到的问题,一上午了,还是没有找出来是什么问题。特来问问
目的:使用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)
查看是否修改成功。结果是修改成功,但是布尔值还是没变。
Updates
方法就不会更新这字段,而布尔值的零值是false
。bool
改为*bool
。