[关闭]
@Chiang 2019-12-13T16:54:45.000000Z 字数 1877 阅读 596

数据库-分页

Laravel


查询构造器分页

paginate

  1. $users = DB::table('users')->paginate(15);

simplePaginate

简单分页

  1. $users = DB::table('users')->simplePaginate(15);

对 Eloquent 模型进行分页

paginate

  1. $users = App\User::paginate(15);
  2. $users = User::where('votes', '>', 100)->paginate(15);

simplePaginate

  1. $users = User::where('votes', '>', 100)->simplePaginate(15);

手动创建分页

  • Illuminate\Pagination\Paginator
  • Illuminate\Pagination\LengthAwarePaginator
  • Paginator 相当于查询语句构造器和 Eloquent 中的 simplePaginate 方法,而 LengthAwarePaginator 则相当于 paginate 方法

显示分页结果

  1. $users->links();

自定义分页器的 URI

  1. $users = App\User::paginate(15);
  2. $users->withPath('custom/url');

附加参数到分页链接中

  1. // 用 append 方法附加查询参数到分页链接中
  2. $users->appends(['sort' => 'votes'])->links();
  3. // 附加「哈希片段」到分页器的链接中,你应该使用 fragment 方法
  4. $users->fragment('foo')->links();

将结果转换为 JSON

Laravel 分页器结果类实现了 Illuminate\Contracts\Support\Jsonable 接口契约并且提供 toJson 方法,所以它很容易将你的分页结果集转换为 JSON。你也可以通过简单地从路由返回或者控制器 action 的方式,将分页实例转换为 JSON

  1. Route::get('users', function () {
  2. return App\User::paginate();
  3. });
  4. // 展示信息
  5. {
  6. "total": 50,
  7. "per_page": 15,
  8. "current_page": 1,
  9. "last_page": 4,
  10. "next_page_url": "http://laravel.app?page=2",
  11. "prev_page_url": null,
  12. "from": 1,
  13. "to": 15,
  14. "data":[
  15. {
  16. // Result Object
  17. },
  18. {
  19. // Result Object
  20. }
  21. ]
  22. }

自定义分页视图

方法1

  1. {{ $paginator->links('view.name') }}
  2. // Passing data to the view...
  3. {{ $paginator->links('view.name', ['foo' => 'bar']) }}

方法2

自定义分页视图最简单的方法是通过 vendor:publish 命令将它们导出到你的 resources/views/vendor 目录

  1. php artisan vendor:publish --tag=laravel-pagination

这个命令将视图放置在 resources/views/vendor/pagination 目录中。这个目录下的 default.blade.php 文件对应于默认分页视图。你可以简单地编辑这个文件来修改分页的 HTML

分页器实例方法

  1. $results->count()
  2. $results->currentPage()
  3. $results->firstItem()
  4. $results->hasMorePages()
  5. $results->lastItem()
  6. $results->lastPage() (Not available when using simplePaginate)
  7. $results->nextPageUrl()
  8. $results->perPage()
  9. $results->previousPageUrl()
  10. $results->total() (Not available when using simplePaginate)
  11. $results->url($page)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注