Laravel having与paginate使用细则

Laravel提供的分页函数paginate无法与having一起使用会出现问题!在GitHub中可以找到关于此issue的讨论

having是对查出来的数据做筛选,paginate方法在获取总数(total)的时候无法对having查出来做统计。
会出现Column not found: 1054 Unknown column 'distance' in 'having clause'

目前想到解决办法只能原生分页的方式

  • 查询总条数
  • 计算每页多少条数据
  • 对查询使用limit分页
  • 返回对应数据

在解决这一问题中,使用过一个偏方,使用数组分页…

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* 数组分页
* @param $arr
* @param int $size
* @param int $page
* @return mixed
*/
private function pageArray ($arr, $size = 10, $page = 1)
{
$new = array_chunk($arr, $size);

return $new[$page - 1];
}

不过这个由后端对数据处理分页数据量大了之后性能很不好,每次翻页都需要从DB中查询所有数据在使用
array_chunk()进行分组.不建议使用.