@Chiang
2019-12-13T16:54:45.000000Z
字数 1877
阅读 600
Laravel
$users = DB::table('users')->paginate(15);
简单分页
$users = DB::table('users')->simplePaginate(15);
$users = App\User::paginate(15);
$users = User::where('votes', '>', 100)->paginate(15);
$users = User::where('votes', '>', 100)->simplePaginate(15);
- Illuminate\Pagination\Paginator
- Illuminate\Pagination\LengthAwarePaginator
- Paginator 相当于查询语句构造器和 Eloquent 中的 simplePaginate 方法,而 LengthAwarePaginator 则相当于 paginate 方法
$users->links();
$users = App\User::paginate(15);
$users->withPath('custom/url');
// 用 append 方法附加查询参数到分页链接中
$users->appends(['sort' => 'votes'])->links();
// 附加「哈希片段」到分页器的链接中,你应该使用 fragment 方法
$users->fragment('foo')->links();
Laravel 分页器结果类实现了 Illuminate\Contracts\Support\Jsonable 接口契约并且提供 toJson 方法,所以它很容易将你的分页结果集转换为 JSON。你也可以通过简单地从路由返回或者控制器 action 的方式,将分页实例转换为 JSON
Route::get('users', function () {
return App\User::paginate();
});
// 展示信息
{
"total": 50,
"per_page": 15,
"current_page": 1,
"last_page": 4,
"next_page_url": "http://laravel.app?page=2",
"prev_page_url": null,
"from": 1,
"to": 15,
"data":[
{
// Result Object
},
{
// Result Object
}
]
}
{{ $paginator->links('view.name') }}
// Passing data to the view...
{{ $paginator->links('view.name', ['foo' => 'bar']) }}
自定义分页视图最简单的方法是通过 vendor:publish 命令将它们导出到你的 resources/views/vendor 目录
php artisan vendor:publish --tag=laravel-pagination
这个命令将视图放置在 resources/views/vendor/pagination 目录中。这个目录下的 default.blade.php 文件对应于默认分页视图。你可以简单地编辑这个文件来修改分页的 HTML
$results->count()
$results->currentPage()
$results->firstItem()
$results->hasMorePages()
$results->lastItem()
$results->lastPage() (Not available when using simplePaginate)
$results->nextPageUrl()
$results->perPage()
$results->previousPageUrl()
$results->total() (Not available when using simplePaginate)
$results->url($page)