为了账号安全,请及时绑定邮箱和手机立即绑定

Golang SQLBoiler 在运行订单时不返回任何内容

Golang SQLBoiler 在运行订单时不返回任何内容

Go
眼眸繁星 2022-09-19 10:07:40
我在Go上使用SqlBoiler向PostgreSQL数据库发送请求,但是当尝试按其中一个字段对数据库进行排序时,它返回0行。首先,我运行一个计数(如下所述),如果计数返回多于或等于一行,那么我查询数据库中的所有结果。这将返回正确的行计数:res, _ := models.MT(        Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)),    ).Count(CTX, DB)这将不返回任何行,尽管查询参数完全相同:res, _ := models.MT(        Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)),        OrderBy(`mt_mas`),    ).Count(CTX, DB)这是我在检查行计数后获取所有行的方式:res, err := models.MT(        Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)),        OrderBy(`mt_mas`),    ).All(CTX, DB)从上面的请求中读取错误时,它会打印出来,一切似乎都很好。<nil>如前所述,数据库是(版本 13.3),列如下所示:mt_mas(整数)此列保存此行所有者的 uid。mt_mem(字符变化 [1000])此列包含用户成员 uid:s 的 JSON 列表。mt_group(布尔值)此列显示此行是一组不。数据库行示例:|mt_mas |mt_mem |mt_group | |:----: |:----: |:------: | |1 |{“1”, “2”} |假|
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

好的,解决方案比预期的要简单。@Gari辛格(https://stackoverflow.com/users/5529712/gari-singh)实际上在上面的评论中指出了这一点,但我想我会在这里写出来,这样问题就解决了。


解决方案是干脆不对计算结果的查询进行排序。因此,用于计数的正确代码应仅为:


res, _ := models.MT(

        Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)),

    ).Count(CTX, DB)

然后运行查询以获取具有顺序的实际行,如下所示:


res, err := models.MT(

        Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)),

        OrderBy("mt_mas"),

    ).All(CTX, DB)

感谢您的帮助!:)


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号