热门搜索 :
考研考公
您的当前位置:首页正文

laravel 接收参数进行分页

来源:东饰资讯网

本篇文章简单介绍利用laravel的Eloquent接收参数进行分页。文章基于laravel5.3的Eloquent,在slim3框架上应用和实践。

Eloquent如何进行分页?

paginate如何运作

假设我们对用户列表进行分页。

Users::paginate();

paginate当中可以接收一个参数,这个参数决定每一页显示多少条目数据,比如paginate(5);就是每五条数据一页。
如果返回json数据看起来是下图的样子。

{
  "total": 2,
  "per_page": "1",
  "current_page": 1,
  "last_page": 2,
  "next_page_url": "http://localhost/learn_slim/v1/users/page/1/2",
  "prev_page_url": "",
  "from": 1,
  "to": 1,
  "data": [
    {
      "ID": 1,
      "user_login": "admin",
      "user_pass": "123123",
    }
  ]
}

total:表示数据的总页数
per_page:表示每一页显示的数据条目
current_page:表示当前页面的页码
last_page:表示最后一页的页码
next_page_url:表示下一页的链接
prev_page_url:表示上一页的链接
from:获取切片中第一个条目
to:获取切片中最后一个条目

通过传值方法进行分页查询

上面的让paginate()只接收一个参数的办法虽然可以进行简单的分页,但是无法返回指定页面。paginate()还可以接收其他参数。

paginate($perPage = null, $columns = ['*'], $pageName = '', $page = null)

上面的参数解释
perPage:表示每页显示的条目数量
columns:接收数组,可以向数组里传输字段,可以添加多个字段用来查询显示每一个条目的结果
pageName:表示在返回链接的时候的参数的前缀名称,在使用控制器模式接收参数的时候会用到
page:表示查询第几页及查询页码
其他详细内容可以去查看paginate类里面的内容

paginate类

关于返回链接的问题

实际上返回链接是?=page的形式,但是我们在编写restful api的时候不会去接收这种形式的参数,而是使用pretty url。这时我们可以修改paginate()输出的数组内容。
我们可以利用toArray()获得paginate的数组。paginate()->toArray()
然后利用 str_replace()替换掉?=,再重新赋值到数组当中就可以了。

Top