Laravel 4.x Paginate Array

时间:2014-05-01 00:25:51

标签: arrays laravel laravel-4 pagination paginate

为了简单起见,我有一个数组,$ matches,在我的控制器中包含我的结果。通常情况下,我会返回一个视图,传递该数组。

return View::make('results', compact('matches'));

但是,我想在视图中对这些结果进行分页。

@foreach ($matches as $match)
   ...
@endforeach
// Paginate matches here!

似乎Laravel建立的分页不适用于阵列。我无法找到任何显示如何执行此操作的资源。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:11)

我最终使用以下代码。您必须手动传递每页的项目。 $matches是传递给分页器的数据数组。

$perPage = 2;
$currentPage = Input::get('page') - 1;
$pagedData = array_slice($matches, $currentPage * $perPage, $perPage);
$matches = Paginator::make($pagedData, count($matches), $perPage);

答案 1 :(得分:1)

您可以手动创建分页器,它们可以使用数组:

$paginator = Paginator::make($items, $totalItems, $perPage);

检查文档:http://laravel.com/docs/pagination

答案 2 :(得分:1)

如果您想手动分页,这是最好的答案。当您的查询包含distinct()时,这很有用。

$matches = DB::table('...')->where('...')->distict()->get();    
$perPage = 2;
$currentPage = Input::get('page', 1) - 1;
$pagedData = array_slice($matches, $currentPage * $perPage, $perPage);
$matches = Paginator::make($pagedData, count($matches), $perPage);