thinkphp中分页paginate和group by一起使用时 总记录数和分页代码异常
tp中使用paginate时会使用Db里面的count函数来统计数据总行数。
count函数则会使用count(当前查询的所有字段) limit 1 进行查询
当没使用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正确.