flagstudio/laravel-paginate

为 Laravel Eloquent 构建器和集合提供不同的分页宏

v0.1.3 2021-11-25 08:12 UTC

This package is auto-updated.

Last update: 2024-09-25 14:17:50 UTC


README

安装

您可以通过 composer 拉取此包

composer require flagstudio/laravel-paginate

该包将自动注册自己。

这些宏用于 Eloquent 构建器和集合。在集合或构建器上使用分页的主要区别在于构建器尚未执行数据库请求,即分页将执行请求以从数据库中获取所需数量的记录。集合已经包含所有元素,分页将不会执行任何数据库请求。

paginate

从构建器或集合创建 LengthAwarePaginator 实例。

collect($posts)->paginate(5); // From Collection instance
Post::orderBy('created_at', 'desc')->get()->paginate(5); // From Collection instance
Post::orderBy('created_at', 'desc')->paginate(5); // From Builder instance

此分页将 $posts 的内容分页为每页 5 项。 paginate 接受一些选项,有关详细介绍,请参阅Laravel 文档

paginateFirstDifferent

从构建器或集合创建扩展 LengthAwarePaginatorFirstDifferentLengthAwarePaginator.php 实例。

collect($posts)->paginateFirstDifferent(10, 5); // From Collection instance
Post::orderBy('created_at', 'desc')->get()->paginateFirstDifferent(10, 5); // From Collection instance
Post::orderBy('created_at', 'desc')->paginateFirstDifferent(10, 5); // From Builder instance

此分页将 $posts 的内容分页为第一页 10 项,之后每页 5 项。 paginateFirstDifferent 接受与 paginate 相同的选项,但接受两个参数 $firstPerPage$nextPerPage 代替 $perPage

您还可以传递第三个参数以获取从第一页到当前页的所有帖子。

Post::orderBy('created_at', 'desc')->paginateFirstDifferent(10, 5, true);

paginateWithPrevious

从构建器或集合创建 LengthAwarePaginator 实例。

collect($posts)->paginateWithPrevious(5); // From Collection instance
Post::orderBy('created_at', 'desc')->get()->paginateWithPrevious(5); // From Builder instance
Post::orderBy('created_at', 'desc')->paginateWithPrevious(5); // From Builder instance

此分页将 $posts 的内容分页为每页 5 项,但获取从第一页到当前页的所有帖子。例如,如果当前页为 5,则 paginateWithPrevious 将返回 25 篇帖子(每页 5 篇)。如果您想在页面重新加载后加载当前页的所有帖子或分享带分页的链接(https://website.com/posts?page=5),则非常有用。paginateWithPrevious 接受与 paginate 相同的选项