美文网首页Laravel开发实践PHP经验分享Laravel
Laravel限制条数再分页(使用LengthAwarePagi

Laravel限制条数再分页(使用LengthAwarePagi

作者: 众神开挂 | 来源:发表于2020-03-12 09:15 被阅读0次

项目上比较常用,经常需要你限制返回的总数,比方说让你只显示最新的48条数据并进行分页,此时使用limit(48)再用paginate方法分页的话,limit方法会失效,例如

$video_list = UserVideo::orderByDesc('video_upload_time')->limit(48)->paginate(16);

下面尝试使用官方文档的手动分页方法:LengthAwarePaginator/Paginator
文档原文:

手动创建分页
有时你可能希望手动创建分页,并传递一个数组集给它。可以通过创建 Illuminate\Pagination\Paginator 或 Illuminate\Pagination\LengthAwarePaginator 实例来实现,这有赖于你的需要。.
Paginator 类不需要知道结果集的总数;但是,这样一来,这个类就没办法获知最后一页的索引。 LengthAwarePaginator 接受和 Paginator 几乎相同的参数;不过,它会计算结果集的总数。
换句话说, Paginator 相当于 查询构造器 或 Eloquent 的 simplePaginate 方法,而 LengthAwarePaginator 相当于 paginate 方法。

以下方法可以作为参考

1、使用LengthAwarePaginator 手动分页

直接贴出代码分析

  /**
  *  限制条数再分页
  */
    public function videoList(Request $request)
    {
        //限制每个用户输出48条视频数据,输出分页为16条一页
       $video_list = UserVideo::orderByDesc('video_upload_time')
            ->where('user_id', $request['user_id'])->limit(48)->get()->toArray();
        //当前页数 默认1
        $page = $request->page?:1;
        //每页的条数
        $perPage = 16;
        //计算每页分页的初始位置
        $offset = ($page * $perPage) - $perPage;
        //实例化LengthAwarePaginator类,并传入对应的参数
        $data = new LengthAwarePaginator(array_slice($video_list, $offset, $perPage, true), count($video_list), $perPage, $page, ['path' => $request->url(), 'query' => $request->query()]);
        return $data;
    }

image.png

2、使用Paginator 手动分页

  /**
  *  限制条数再分页
  */
    public function videoList(Request $request)
    {
        //限制每个用户输出48条视频数据,输出分页为16条一页
        $video_list = UserVideo::orderByDesc('video_upload_time')
            ->where('user_id', $request['user_id'])->limit(48)->get()->toArray();
        //当前页数 默认1
        $page = $request->page?:1;
        //每页的条数
        $perPage = 16;
        //计算每页分页的初始位置
        $offset = ($page * $perPage) - $perPage;
        //实例化Paginator类,(删掉上一步的count($video_list)参数即可 )并传入对应的参数
       $data = new Paginator(array_slice($video, $offset, $perPage, true), $perPage, $page, ['path' => $request->url(), 'query' => $request->query()]);
        return $data;
    }

image.png

相关文章

  • Laravel限制条数再分页(使用LengthAwarePagi

    项目上比较常用,经常需要你限制返回的总数,比方说让你只显示最新的48条数据并进行分页,此时使用limit(48)再...

  • Laravel 限制条数后再分页

    laravel 自带开箱即用的分页,使用起来如丝般顺滑。默认情况下是对所有记录进行分页,现在我们有这样的需求:限制...

  • laravel orm的坑

    坑:1.relationship分页问题laravel的relationship分页,在使用动态属性时,分页错误。...

  • laravel 自带分页与 groupBy共用

    对于laravel来说有很多自带功能,其中laravel的分页就很美观,但是在sql语句中使用groupBy和分页...

  • laravel自定义分页

    Paginate分页 手动分页详解 laravel自带的分页功能十分强大,只不过,在使用 groupBy 语句的分...

  • laravel温故

    数据库 快速入门 查询构造器 分页 数据库迁移 laravel数据填充 laravel的Redis使用 使用red...

  • element-ui中table组件-高度做适配

    使用element-ui中table组件与Pagination分页组件时, 由于分页可设置页面展示条数,那么表格的...

  • laravel 分页 使用layui样式

    laravel分页自带的事bootsharp的分页样式个人更喜欢layui的分页样式,下面介绍如何在laravel...

  • 基础:iOS向上取整、向下取整、四舍五入

    最近再工作中发现了个bug,也是自己的一个疏忽吧。在通过数据总条数和每页请求返回条数计算数据分页总数时使用了向上取...

  • 上拉加载更多

    上拉刷新, 由服务器的参数决定, 通常会返回给一个每页限制多少条数据的参数limit, 和一个分页的参数, 分页...

网友评论

    本文标题:Laravel限制条数再分页(使用LengthAwarePagi

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