我正在尝试对数组数据集进行分页,事实证明它比我想象的更具挑战性。
我正在使用 Laravel 5
所以我有一个抽象接口/存储库,我的所有其他模型都扩展到该接口/存储库,并且我在我的抽象存储库调用 paginate 中创建了一个方法。我都包括了
use Illuminate\Pagination\Paginator;
和
use Illuminate\Pagination\LengthAwarePaginator;
这是方法
public function paginate($items,$perPage,$pageStart=1)
{
// Start displaying items from this number;
$offSet = ($pageStart * $perPage) - $perPage;
// Get only the items you need using array_slice
$itemsForCurrentPage = array_slice($items, $offSet, $perPage, true);
return new LengthAwarePaginator($itemsForCurrentPage, count($items), $perPage,Paginator::resolveCurrentPage(), array('path' => Paginator::resolveCurrentPath()));
}
因此,您可以想象,该函数接受$items
一个变量数组,该$perPage
变量指示要分页的项目数和一个$pageStart
指示从哪个页面开始的变量。
LengthAwarePaginator
分页有效,当我做 a 时我可以看到实例dd()
,它的所有值看起来都很好。
当我显示结果时,问题就开始了。
当我做{!! $instances->render() !!}
分页器链接显示很好时,page
参数会根据链接发生变化,但数据没有变化。每一页的数据都是一样的。例如,当我使用 Eloquent 时,Model::paginate(3)
一切正常,但是当我dd()
这样做时LengthAwarePaginator
,它与我的自定义分页器的实例相同,LengthAwarePaginator
只是它对数组进行分页,而不是对集合进行分页。