Gorm 无法 提交 / 查询 0 值的解决办法

如果向 gorm 提交 / 查询 变量类型的默认 0 值时,会被认为无提交值 / 查询为空,从而导致无法更新 / 查询无结果。
解决方案是在 gorm 结构体声明中使用指针。
下面以 bool 值为例。

type Blog struct {
  Title string
  Published bool
}

golang 的布尔类型变量默认空值是 false,即认为无提交值,所以上面的要提交 Blog 的 Published 值为 false 是提交不成功的。

解决方案是将 Pubilshed 类型改为指针类型:

type Blog struct {
  Title string
  Published *bool
}

这样就能正常提交了

当需要给 Published 赋值时,可以:

var blog Blog
blog.Published = new(bool)
*blog.published = true

或者:

func BoolPtr(b bool) *bool {
   return &b
}
blog.Published = BoolPtr(false)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容