paginate分页及手动分页

Paginate分页

//ORM  默认分页
 $students=Student::paginate(5);
//显示
$students->render();

// 使用简单模板 - 只有 "上一页" 或 "下一页" 链接
Student::where(‘cars‘, 2)->simplePaginate(15);

// 手动分页
$item  //手动查询到的数据
$total //所有符合条件的数据总数量
$perPage      //每个页面,数据显示的条数
Paginator::make($items, $totalItems, $perPage);

手动分页详解

laravel自带的分页功能十分强大,只不过,在使用 groupBy 语句的分页操作时,无法由 Laravel 有效执行。如果你需要在一个分页结果集中使用groupBy,建议你查询数据库并手动创建分页器。

//控制器代码
    use Illuminate\Support\Facades\DB;
    use Illuminate\Pagination\LengthAwarePaginator;

    class IndexController extends Controller
    {
        //测试查询数据库并手动创建分页器
        public function paginationTest(Request $request){
            $perPage = 5;
            $page = $request->input("page",1)-1;
            $total = DB::table("person")
                        ->groupBy()
                        ->count();

            $items = DB::table("person")
                        ->groupBy()
                        ->skip($page*$perPage)
                        ->take($perPage)
                        ->get();

            //$items = array_slice($users, ($current_page-1)*$perPage, $perPage);
            //5.4版本
            $person = new LengthAwarePaginator($items, $total,$perPage);
            //设置baseUrl的方法
            $person->withPath("pagTest");
            //5.4版本之前
             $paginator =new LengthAwarePaginator($items, $total, $perPage, $currentPage, [
            ‘path‘ => Paginator::resolveCurrentPath(),
            ‘pageName‘ => ‘page‘,
            ]);

            return view("index.paginationTest",[‘person‘ => $person]);
        }
    }

//blade
        普通分页
{!!{ $paginator->render() }!!}
    携带查询条件
{!! $paginator->appends(request()->input())->render() !!}    

底层详解

        LengthAwarePaginator构造函数,代码如下
    /**
     * Create a new paginator instance.
     *
     * @param  mixed $items
     * @param  int $total
     * @param  int $perPage
     * @param  int|null $currentPage
     * @param  array $options (path, query, fragment, pageName)
     * @return void
     */
    publicfunction __construct($items,$total,$perPage,$currentPage=null,array$options= [])
    {
        foreach ($optionsas$key=>$value) {
            $this->{$key} =$value;
        }

        $this->total=$total;
        $this->perPage=$perPage;
        $this->lastPage= (int)ceil($total/$perPage);
        $this->path=$this->path!=‘/‘?rtrim($this->path,‘/‘) :$this->path;
        $this->currentPage=$this->setCurrentPage($currentPage,$this->pageName);
        $this->items=$itemsinstanceofCollection ?$items: Collection::make($items);
    }
时间: 2024-10-05 04:44:57

paginate分页及手动分页的相关文章

Laravel 手动分页实现

Laravel 手动分页实现 基于5.2版本 在开发过程中有这么一种情况,你请求Java api获取信息,由于信息较多,需要分页显示.Laravel官方提供了一个简单的方式paginate($perPage),但是这种方法只适用model.查询构建器. 今天说下 给定一个数组如何实现 和paginate方法一样的效果. 查看paginate方法源码 #vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:480

纯js手动分页

昨天让做个页面,后台提供所有数据,没有做好分页,需要前端js手动分页. 我参考了 http://www.cnblogs.com/jiechn/p/4095029.html 做了些许改动让分页效果更加完善. 最终效果图 js代码 /** * 分页函数 * pno--页数 * psize--每页显示记录数 * 分页部分是从真实数据行开始,因而存在加减某个常数,以确定真正的记录数 * 纯js分页实质是数据行全部加载,通过是否显示属性完成分页功能 **/ function goPage(pno){ va

114.实现手动分页效果

分页 在网站的开发当中,我们常常需要将各种列表中的数据分页显示,想要实现分页的效果,就可以通过django.core.Paginator.Paginator和django.core.Paginator.Page来实现. 1. 比如,将Paginator_pageAPP中表article中的range(1,100)的数据分页显示,每页显示10条数据,可以实现手动分页的效果. (1)首先在models.py文件中定义模型Article,示例代码如下: from django.db import mo

织梦文章页分页导航条 分页代码副标题调用

后台  系统--> 系统基本参数---> 性能选项 (是/否)开启分页标题,开启会影响HTML生成速度(cfg_arcsptitle): 如果开启了这个函数,将启用分页标题,我们在发布普通文章的时候会在编辑器看到添加“#p#副标题#e#”这个代码,开启后分页标题的功能才可以使用,不过需要在模板中加入{dede:pagetitle style='select'/}标签 然后将 “#p#副标题#e#” 副标题修改成 你文章页面分页的标题即可. 标签详解: pagetitle:表示获取DedeCms

SpringMVC分页和搜索分页

分页使我们经常需要使用的功能,昨天在Spring MVC中实现了简单的分页操作和搜索分页,在此记录一下.使用的框架为(MyBatis+SpringMVC+Spring). 首先我们需要一个分页的工具类: 1.分页 import java.io.Serializable; /** * 分页 */ public class Page implements Serializable { private static final long serialVersionUID = -319804844964

Jsp分页实例---真分页

网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给客户端,由js来控制每一页的显示. 真分页:由程序控制,每一次只返回一页大小的数据,显示到客户端. 由此可以很清楚的分辨出真假分页各自的优缺点: 假分页:由于一次性读出所有数据并返回给客户端,如果数据量庞大,所以这一次的动作可能是非常消耗服务器资源和带宽的, 但是返回给客户端以后就非常轻松了,客户在

关于php,mysql,html的数字分页和文本分页的两种分页样式供大家参考

请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 首先进行样式展示希望对大家有所帮助,也希望大家给出意见和建议: 第一种:数字分页 第二种:为文本分页 php分页函数(我写在下面引入的common.inc.php公共文件中): /* *_page()分页的相关参数 *@param int $_pagesize 每页存有几个好友 *@param $_sql 获取所有字段 *

python/Djangof分页与自定义分页

python/Djangof分页与自定义分页 Django分页 1 ##============================================分页======================================================= 2 # current_pagc = request.GET.get('page') 3 # from django.core.paginator import Paginator,Page 4 # # result = m

PHP实现仿Google分页效果的分页函数

本文实例讲述了PHP实现仿Google分页效果的分页函数.分享给大家供大家参考.具体如下: /** * 分页函数 * @param int $total 总页数 * @param int $pagesize 每页几条 * @param string $pkey url中页面变量名称 * @param string $url 基础url,其中的{page}会被替换为页码 * 依赖函数 request_uri httpInt */ function page($total,$pagesize=10,