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

发布于 2022-09-07 16:28:44 字数 1030 浏览 38 评论 0

问题描述 :

今天早上遇到的问题,一上午了,还是没有找出来是什么问题。特来问问
目的:使用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)查看是否修改成功。结果是修改成功,但是布尔值还是没变。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

复古式 2022-09-14 16:28:44
  • 如果是零值,那么Updates方法就不会更新这字段,而布尔值的零值是false
  • 办法一: 把属性从bool改为*bool
  • 办法二: 使用其他的update方法。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文