用gorm进行查询,数据库里值为null的字段在struct里怎么保持还是null?struct会默认变成空字符串或者0这种

发布于 2022-09-11 16:29:29 字数 259 浏览 11 评论 0

err := db.Where("id = ?", id).First(&activity).Error

{"id": 30, "name": null}

数据库的name字段是null,但是&activity里的name会变成"",怎么保持还是null

type Activity struct {
    Id      int
    name    string
}

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

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

发布评论

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

评论(1

め可乐爱微笑 2022-09-18 16:29:29

我用的xorm,也有相同的问题。
这个问题用orm自带的find方法没法赋值成null,golang不支持string型赋nil值,初始化的时候就一定有默认值。
变通一下的做法就是写sql句,IFNULL(name,"无"),然后用orm执行查询sql句。

sql:= "select id,IFNULL(name,"无") from table"
result,err:=db.Query(sql)

更新和新增的时候也是一样,结构体不赋值用orm的insert语句插入数据库以后也是相应的默认值0和""

sql:="update table set ....."
err:=db.Exec(sql)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文