flagstudio / laravel-paginate
为 Laravel Eloquent 构建器和集合提供不同的分页宏
Requires
- php: ^7.2|^8.0
- laravel/framework: ^5.6.0|^5.7.0|^5.8.0|^6.0|^7.0|^8.0
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
从构建器或集合创建扩展 LengthAwarePaginator
的 FirstDifferentLengthAwarePaginator.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
相同的选项