美文网首页
laravel 接收参数进行分页

laravel 接收参数进行分页

作者: ppmoon | 来源:发表于2016-11-15 21:01 被阅读5130次

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

    Eloquent如何进行分页?

    Eloquent如何进行分页的办法在官方文档中有详细的解析,http://laravelacademy.org/post/6160.html 大家也可以参考这篇文章。主要是利用两个方法:其一使用simplePaginate可以进行简单的分页,我们可以获得前一页和后一页的链接。其二是使用paginate方法进行分页,这种方法可以传递参数进行分页,并且返回json格式的数据,本篇文章将详细介绍paginate的方法。

    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()替换掉?=,再重新赋值到数组当中就可以了。

    相关文章

      网友评论

          本文标题:laravel 接收参数进行分页

          本文链接:https://www.haomeiwen.com/subject/rjjlpttx.html