LengthAwarePaginator $ collection-> lastPage()总是1

时间:2018-04-20 09:50:23

标签: php laravel pagination

我正在使用Laravel 5.2和 LengthAwarePaginator 对我的Collection进行分页,除了lastPage()方法之外一切顺利,它一如既往地给我1个。

这是我的代码:

我使用 foreach 循环构建集合:

$collection = collect();    
foreach ($rows as $row) {
    $collection->push($row);
}

然后我分页使用:

$collection = $collection->sortBy('id')->forPage($page, $page_limit);
$collection = new LengthAwarePaginator($collection, $collection->count(), $page_limit, $page);
return $collection;

这是我的分页信息:

  1. - > currentPage():3(我现在在第3页)
  2. $ per_page_limit:8
  3. Collection:77
  4. 中的总项目
  5. - > lastPage():1(这是问题)
  6. 我的问题是为什么 - > lastPage()值始终为1?

    任何帮助对我都非常有帮助。

    提前致谢

1 个答案:

答案 0 :(得分:2)

这是因为你的$collection在第一行之后,只会包含8个项目,然后你将它的计数作为第二个参数传递给LengthAwarePaginator - 这将返回8项的计数。

在您的情况下我会做的是:

$all = $collection->sortBy('id');
$chunk = $collection->forPage(3, 8);

$paginator = new LengthAwarePaginator($chunk, $all->count(), 8, 3);