thinkphp中分页paginate和group by一起使用时 总记录数和分页代码异常

时间:2024-03-15 21:56:03

thinkphp中分页paginate和group by一起使用时 总记录数和分页代码异常

tp中使用paginate时会使用Db里面的count函数来统计数据总行数。

thinkphp中分页paginate和group by一起使用时 总记录数和分页代码异常

count函数则会使用count(当前查询的所有字段)  limit 1 进行查询

thinkphp中分页paginate和group by一起使用时 总记录数和分页代码异常

当没使用group by时查询正常,当使用了group by时count统计的是分组后的每行的数量

然后limit 1返回第一行的统计值 所以会出现总行数不对的情况

解决办法

原语句

$list=Db::name(‘sms_log’)->field(‘mobile’)->group(‘mobile’)->paginate(10);//此时总页数和分页的html异常

修改后

$buildSql=Db::name(‘sms_log’)->field(‘mobile’)->group(‘mobile’)->buildSql();

$list=Db::table($buildSql)->alias(‘bs’)->paginate(10);//总页数和分页的html正确.