在 Laravel 中,当你尝试在集合(Collection)上应用分页时可能会遇到错误。这是因为 Laravel 的 paginate
方法是为查询构建器(Query Builder)和 Eloquent 模型设计的,而不是直接用于集合。
map
、filter
、reduce
等。直接在集合上调用 paginate
方法会出错,因为 paginate
方法不支持集合。
如果你需要对集合进行分页,可以手动实现分页逻辑。以下是一个示例:
use Illuminate\Pagination\LengthAwarePaginator;
// 假设你有一个集合 $collection
$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
// 每页显示的数量
$perPage = 3;
// 当前页码,默认为第一页
$page = request()->input('page', 1);
// 将集合切片并包装成 LengthAwarePaginator 对象
$paginator = new LengthAwarePaginator(
$collection->slice(($page - 1) * $perPage, $perPage),
$collection->count(),
$perPage,
$page,
['path' => LengthAwarePaginator::resolveCurrentPath()]
);
// 现在你可以像使用普通的分页对象一样使用 $paginator
return view('your-view', compact('paginator'));
通过这种方式,你可以在集合上实现分页功能,并且保持代码的清晰和可维护性。
领取专属 10元无门槛券
手把手带您无忧上云