精华内容
下载资源
问答
  • Laravel开发-laravel-paginate-plus Laravel的额外分页函数
  • page": 10, "prev_page_url": null, "to": 1, "total": 1 }, "message": "success" } 查看文件 laravel5\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php paginate paginator /** * ...

    使用方式

    主要是用到了类的重写和容器

    $users = DB::table('users')->paginate(15);
    在这里插入图片描述

    {
        "code": 200,
        "data": {
            "current_page": 1,
            "data": [
                {
                    "id": 1,
                    "name": "技术部",
                    "description": "",
                    "qr_code_path": "http://mag.com/1.jpg",
                    "created_at": "2020-06-24 16:12:43",
                    "updated_at": "2020-06-24 16:12:44"
                }
            ],
            "first_page_url": "http://mag.com/department?page=1",
            "from": 1,
            "last_page": 1,
            "last_page_url": "http://mag.com/department?page=1",
            "next_page_url": null,
            "path": "http://mag.com/department",
            "per_page": 10,
            "prev_page_url": null,
            "to": 1,
            "total": 1
        },
        "message": "success"
    }
    

    查看文件
    laravel5\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php

    paginate
    paginator

        /**
         * Paginate the given query.
         *
         * @param  int  $perPage
         * @param  array  $columns
         * @param  string  $pageName
         * @param  int|null  $page
         * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
         *
         * @throws \InvalidArgumentException
         */
        public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
        {
            $page = $page ?: Paginator::resolveCurrentPage($pageName);
    
            $perPage = $perPage ?: $this->model->getPerPage();
    
            $results = ($total = $this->toBase()->getCountForPagination())
                                        ? $this->forPage($page, $perPage)->get($columns)
                                        : $this->model->newCollection();
    
            return $this->paginator($results, $total, $perPage, $page, [
                'path' => Paginator::resolveCurrentPath(),
                'pageName' => $pageName,
            ]);
        }
    

    跟进:laravel5\vendor\laravel\framework\src\Illuminate\Database\Concerns\BuildsQueries.php

    在这里插入图片描述
    可以看到我用红色标出来是是返回的分页类, 用蓝色标出来是用容器加载的这个类。

    继续查找这个类 laravel5\vendor\laravel\framework\src\Illuminate\Pagination\LengthAwarePaginator.php 发现组装分页数据的是这个类中toArray方法

     /**
      * Get the instance as an array.
      *
      * @return array
      */
     public function toArray()
     {
         return [
             'current_page' => $this->currentPage(),
             'data' => $this->items->toArray(),
             'first_page_url' => $this->url(1),
             'from' => $this->firstItem(),
             'last_page' => $this->lastPage(),
             'last_page_url' => $this->url($this->lastPage()),
             'next_page_url' => $this->nextPageUrl(),
             'path' => $this->path,
             'per_page' => $this->perPage(),
             'prev_page_url' => $this->previousPageUrl(),
             'to' => $this->lastItem(),
             'total' => $this->total(),
         ];
     }
    

    刚刚上面也说这个分页类是通过容器加载的,那我们只要在容器内重新加载下这个类就行。

    修改方式

    先自定义一个分页类,继承上面的分页类,并重写了toArray方法。
    新建文件夹及类文件
    laravel5\app\Services\Common\LengthAwarePaginatorService.php

    namespace App\Services\Common;
    /**
     * 重写分页返回数组
     * Class LengthAwarePaginatorService
     * @package App\Services\Common
     */
    class LengthAwarePaginatorService extends \Illuminate\Pagination\LengthAwarePaginator
    {
        public function toArray()
        {
            return [
                'data' => $this->items->toArray(),
                'total' => $this->total(),
            ];
        }
    }
    

    然后在 laravel5\app\Providers\AppServiceProvider.php 容器内重新绑定了这个分页类的实现

    <?php
    
    namespace App\Providers;
    
    use App\Services\Common\LengthAwarePaginatorService;
    use Illuminate\Support\ServiceProvider;
    
    class AppServiceProvider extends ServiceProvider
    {
        /**
         * Register any application services.
         *
         * @return void
         */
        public function register()
        {
            $this->app->bind('Illuminate\Pagination\LengthAwarePaginator',function ($app,$options){
                return new LengthAwarePaginatorService($options['items'], $options['total'], $options['perPage'], $options['currentPage'] , $options['options']);
            });
        }
    
        /**
         * Bootstrap any application services.
         *
         * @return void
         */
        public function boot()
        {
            \Schema::defaultStringLength(191);
        }
    }
    
    

    预览

    在这里插入图片描述

    展开全文
  • laravel 框架想实现一个分页接口,返回数据表中其中一部分字段 $list = DB::table('booklist_table')->orderBy('create_time','asc')->paginate($size,['id','title','author','image'])->toJson(); return json_...
  • laravelpaginate->transform

    千次阅读 2018-07-26 13:38:53
    laravel中关于分页以及转换器的使用 $paginate-&gt;transform(function ($item) use ($pkg_tag_name_key){ return [ 'id' =&gt; $item-&gt;id, 'tag' =&gt; $pkg_tag_name_key, 'createtime' ...

    laravel中关于分页以及转换器的使用

    $paginate->transform(function ($item) use ($pkg_tag_name_key){
        return [
            'id' => $item->id,
            'tag' => $pkg_tag_name_key,
            'createtime' => $item->CreateTime,
            'status' => $item->Status,
        ];
    });

    使用了以上方法后,$paginate分页变量会返回以下格式的数据类型

    [
        'list' => [
            [
                'id' => $item->id,
                'tag' => $pkg_tag_name_key,
                'createtime' => $item->CreateTime,
                'status' => $item->Status,
            ]
        ],
        'page' => 1,
        'total' => 1,
        'page_size' => 1
    ];

    即可直接把$paginate对象返回。

    展开全文
  • 框架, 并想在一个复杂的原生查询的基础上用其自带的paginate实现分页,那么可以按以下格式写: $sql = 'select * from (select * from test order by age desc limit 100000) as t group by class'; $result ...
    mysql> select * from test;
    +----+-------+------+-------+
    | id | name  | age  | class |
    +----+-------+------+-------+
    |  1 | qiu   |   22 |     1 | 
    |  2 | liu   |   42 |     1 | 
    |  4 | zheng |   20 |     2 | 
    |  3 | qian  |   20 |     2 | 
    |  0 | wang  |   11 |     3 | 
    |  6 | li    |   33 |     3 | 
    +----+-------+------+-------+
    6 rows in set (0.00 sec)

    需求是找到test表中每个class里面的最大的age,则需要使用group by和max。

    如下的sql查询语句,输出结果有误

    mysql> select id,name,max(age),class from test group by class;
    +----+-------+----------+-------+
    | id | name  | max(age) | class |
    +----+-------+----------+-------+
    |  1 | qiu   |       42 |     1 | 
    |  4 | zheng |       20 |     2 | 
    |  0 | wang  |       33 |     3 | 
    +----+-------+----------+-------+
    3 rows in set (0.00 sec)

    虽然找到的age是最大的age,但是与之匹配的用户信息却不是真实的信息,而是group by分组后的第一条记录的基本信息。

    如使用以下的语句进行查找,则可以返回真实的结果。

    mysql> select * from (
        -> select * from test order by age desc limit 100000) as t
        -> group by class;
    +----+-------+------+-------+
    | id | name  | age  | class |
    +----+-------+------+-------+
    |  2 | liu   |   42 |     1 | 
    |  4 | zheng |   20 |     2 | 
    |  6 | li    |   33 |     3 | 
    +----+-------+------+-------+
    3 rows in set (0.00 sec)

    值得注意的是对于mysql 5.5版本,以上查询语句中可不加limit ,对于mysql 5.7版本,需要加入limit限制,否则不生效

     

    当采用laravel框架, 并想在一个复杂的原生查询的基础上用其自带的paginate实现分页,那么可以按以下格式写:

    $sql = 'select * from (select * from test order by age desc limit 100000) as t group by class';
    
    $result =  DB::table(DB::raw("($sql ) as t"))->paginate(10)

     在这里里面 $sql 充当了一个 临时表,其中可以写非常复杂的联合查询

     

    文章引用:

    1. https://blog.csdn.net/magicharvey/article/details/21372813?utm_source=tuicool&utm_medium=referral 

    2. https://blog.csdn.net/fmyzc/article/details/81507989                 

    3. https://www.jianshu.com/p/3a53c2fc57d0

    展开全文
  • laravel 分页

    2019-09-27 11:50:19
    laravel 分页 跟thinkPHP 基本类似 在下面这个例子中,传递给paginate方法的唯一参数是「每页」显示的项目数量。下面是每页显示15条数据的例子: <?php namespace App\Http\Controllers; use ...

    laravel 分页  跟thinkPHP 基本类似

    在下面这个例子中,传递给 paginate 方法的唯一参数是「每页」显示的项目数量。下面是每页显示 15 条数据的例子:

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Support\Facades\DB;
    use App\Http\Controllers\Controller;
    
    class UserController extends Controller
    {
        /**
         * 展示应用中的所有用户
         *
         * @return Response
         */
        public function index()
        {
            $users = DB::table('users')->paginate(15);
    
            return view('user.index', ['users' => $users]);
        }
    }
    

      分页在页面上的显示为

    <div class="container">
        @foreach ($users as $user)
            {{ $user->name }}
        @endforeach
    </div>
    
    {{ $users->links() }}
    

      

    转载于:https://www.cnblogs.com/gaojian910/p/11465687.html

    展开全文
  • 值得注意的是对于mysql 5.5版本,以上查询语句中可不加limit ,对于mysql 5.7版本,需要加入limit限制,否则不生效 当采用laravel框架, 并想在一个复杂的原生查询的基础上用其自带的paginate实现分页,那么可以按...
  • Laravel 分页伪静态 静态URL 自定义分页URL .html实现 自带paginate分页 URL链接伪静态 以斜线结尾或者.html结尾 SEO实现方法 一、简述 为了SEO优化,我收到的就是这么个分页参数显示的需求。 实现的是这样的...
  • Laravel 分页

    2020-02-08 20:37:46
    //分页 public function test9(){ $users=Member::paginate(2); return view('home.test.test9',compact(['users'])); } @extends('home.test.parent') @section('main') <table> ...
  • laravel分页功能

    2019-10-06 07:59:29
    laravel分页功能类似thinkphp的分页功能,封装了一个非常简便的方法  paginate()和simplePaginate(),括号里面填数字,是每一页要输出的数据条数  区别在于paginate()显示上一页,下一个,和对应第几页的数字...
  • Laravel 分页详解

    2016-08-18 11:22:00
    Laravel分页很简单,但功能又很强大噢! 首先在控制器的方法中使用paginate(页面显示条数)方法,传入页面显示的条数 然后在模板页面使用方法render()来生成html元素 appends()方法可以设置在url中的参数:...
  • Laravel 分页 一,DB类 $res=DB::table('users')->paginate(n);// n为每页显示的条数上一页下一页包含具体页码 DB::table('users')->simplepaginate(n)//只显示上一页下一页 二,Model App\user::->where...
  • laravel paginate动态分页

    2015-10-05 17:09:00
    1.router Route::get('product', function(){ ... $products = App\Product::paginate(10); return view('product.index', compact('products')); }); Route::get('ajax/product', function(){ $p...
  • laravel 分页实现

    2017-04-07 15:12:18
    laravel 本身有一个自带的快速分页方法 paginate,只需要传入每页显示多少条数据就可以 了,但是如果想使用自定义从哪里开始呢,这时候就可以使用offset 和 limit 的组合,offset 设置从哪里开始,limit 设置想要...
  • laravel 分页使用

    2018-12-05 13:48:00
    分页 //对数据库结果分页 $users = DB::table('users')->paginate(15); //可以对 Eloquent 模型分页: $allUsers = User::paginate(15); $someUsers = User::where('votes', '>', 100)->paginate(15); 显示...
  • laravel 分页样式

    2020-09-29 17:56:59
    paginate(3); //前端 @if($news->currentPage() == 1) @else <li><a href="{{url('news?page=1')}}">首页</a></li> <li><a href="{{$news->previousPag
  • 控制器 public function index() ... $data = Teacher::paginate(x); //每页显示x条 return view('teacher.index',compact('data'));/、向前台发送数据 } 前台 代码 <!doctype html> <html lang="en"&g...
  • use Illuminate\Pagination\Paginator; use Illuminate\Pagination\LengthAwarePaginator; //...... $perPage = 15;...$currentPage = $request...https://github.com/jenssegers/laravel-mongodb/issues/858    
  • laravel分页操纵数据

    2019-01-25 07:46:13
    but i am not getting any column in simple foreach, as we get in get() call call in laravel. <pre><code>$user = ToolData::where('sku','=',$q)->orWhere('asin','=',$q)->orWhere('location','=',$q)...
  • laravel 分页转集合

    2021-01-28 10:38:07
    分页转集合 paginate($this->page_size); $r = r−>getCollection()−>transform(function(r->getCollection()->transform(function (r−>getCollection()−>transform(function(model) { });
  • Laravel分页

    2014-07-10 16:28:48
    paginate(5);</code></li> <li>Then, via Ajax I call to another function which must return the next 5 values. But I don't want the first 5 values, only the 5 new ones. <p>So, I am looking for ...
  • Laravel分页评论

    2015-07-27 16:53:13
    <p>I'm trying to "remove" the thread of my application ...<p>So I have a thread and the URL to that tread is <code>http://localhost/rebelbb/Thread-test</code>. When I want to Go to paginate so <code>...
  • laravel分页用起来非常简单,只需要对 query 调用 paginate 函数,把返回的对象扔给前端 blade 文件,在 blade 文件调用函数 render 函数或者 link 函数,就可以得到 上一页、下一页 等等分页特效。 实际上,我们...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 267
精华内容 106
关键字:

laravel分页paginate