total为0的问题

total为0的问题

我的订单列表测试的时候total是0,后面发现srv端的orderlist获取的total就是0
为什么同样的代码我获取到的就是0呢?

global.DB.Where(&model.OrderInfo{User: req.UserId}).Select("user").Count(&total)

改成下面代码可以正确获取

global.DB.Model(&model.OrderInfo{}).Where("user = ?", req.UserId).Count(&total)

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
bobby 2024-12-21 22:10:24

两者的区别

  1. 查询条件的构建方式:

  • 方法 1 使用 GORM 的结构体映射来生成查询条件,依赖于字段名的精确匹配和表结构。

  • 方法 2 使用原生 SQL 风格的条件表达式,适合更灵活的查询场景。

行为上的差异:

  • 方法 1 的 .Select("user") 不会在 Count 查询中生效,但如果将查询结果扩展到获取具体字段数据时可能会产生作用。

  • 方法 2 更显式,完全依赖 SQL 条件,适合动态构建查询。

适用场景:

  • 方法 1 更适合简单的查询条件,尤其是结构体字段与数据库字段映射一致时。

  • 方法 2 更适合复杂条件和动态 SQL 查询。


  • 提问者 Rex_HH #1

    这个我复制错了,老师你课上写的应该是

    global.DB.Where(&model.OrderInfo{User: req.UserId}).Count(&total)

    你运行出来yipi里有total值,但是我运行total是0,只能用下面那种方式才能有值


    2024-12-21 22:30:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Go开发工程师全新版
  • 参与学习       501    人
  • 解答问题       577    个

风口上的技术,薪资水平遥遥领先,现在学习正值红利期! 未来3-5年,Go语言势必成为企业高性能项目中不可替代的语言 从基础到项目实战再到重构,对转行人员友好,真正从入门到精通!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师