美文网首页
gorm分页查询count报错 sql: no rows in

gorm分页查询count报错 sql: no rows in

作者: 开心走一波 | 来源:发表于2020-06-08 17:27 被阅读0次

    正确的写法:

    qs, user,users := db.DB(), new(db.User),new([]db.User)
        var count int
        if nil != listReq.Start && nil != listReq.End {
            qs = qs.Where("created_at BETWEEN ? AND ?", listReq.Start, listReq.End)
        }
        err := qs.Table("user").Count(&count).Error
        if err != nil {
            return nil, err
        }
        if 0 != listReq.PageSize && 0 != listReq.PageNumber {
            qs = qs.Model(&user).Offset((listReq.PageNumber - 1) * listReq.PageSize).Limit(listReq.PageSize)
        }
        if err := qs.Order("created_at desc").Find(&users).Error; err != nil {
            return nil, err
        }
    

    上面只展示了关键的代码,能说明问题即可。

    要点是,count的查询必须写在分页之前,可以写在其余查询逻辑之后。

    • 如果写在分页之后,第一页不会报错,但是从第二页开始就会报错 sql: no rows in result set
    • 如果count写的太靠前了,就没办法顾及到其他必要的查询条件。

    相关文章

      网友评论

          本文标题:gorm分页查询count报错 sql: no rows in

          本文链接:https://www.haomeiwen.com/subject/jgnrtktx.html