我试图在laravel 5.2中使用带有 pagination()
的 pagination()
,并且给出了适当的结果,但是分页保持相同(就像没有应用的那样) .
I have already reviewed and tested below answers with mine code
- laravel 5 - paginate total() of a query with distinct
- Paginate & Distinct
- Query Builder paginate method count number wrong when using distinct
我的代码是这样的:
DB::table('myTable1 AS T1')
->select('T1.*')
->join('myTable2 AS T2','T2.T1_id','=','T1.id')
->distinct()
->paginate(5);
EXAMPLE
- 我有三条记录的结果(即POST1,POST2,POST3和POST1),所以我申请
distinct()
. - 现在我的结果是POST1,POST2和POST3,但分页仍然显示为4条记录(在应用
distinct()
之前的结果) .
任何建议将不胜感激!
3 回答
Laravel似乎存在一些持续存在的问题,并且使用不同的分页 .
在这种情况下,当分页确定记录总数时,它忽略了您在
select()
子句中指定的字段 . 由于它忽略了您的列,因此也会忽略不同的功能 . 因此,计数查询变为select count(*) as aggregate from ...
要解决此问题,您需要告诉paginate函数有关您的列 . 传递您的列数组以选择作为第二个参数,并将它们考虑为总计数 . 所以,如果你这样做:
这将运行计数查询:
因此,您的查询应如下所示:
不同的是工作....当你进行连接时,它会检查所有选定列中的不同条目,这里..连接后得到的列名也包含在连接中...
要运行此项,请将
select()
添加到您的构建器实例,它应该工作:)如果这不适合你,请告诉我:)
我在我的代码中发现了问题,那就是我需要将
$column
作为第二个参数传递给paginate($perPage, $columns, $pageName, $page)
. 我从laravel git issue得到了解决方案 .所以我的工作代码:
Need suggestion
如果,我破解Builder.php的代码绕过传递第二个参数
$column
. 我的意思是这是好事还是任何击球选项?