thinkphp5框架前后端分离项目实现分页功能的方法分析


Posted in PHP onOctober 08, 2019

本文实例讲述了thinkphp5框架前后端分离项目实现分页功能的方法。分享给大家供大家参考,具体如下:

方法一

利用tp5提供的paginate方法实现自动分页

参数

page第几页,paginate分页方法会自动获取

size  每页数量

代码

/**
* Notes:消费记录
* Date: 2019/6/25
* Time: 15:43
* @param Request $request
* @return \think\response\Json
*/
public function getMyConsumeLog(Request $request)
{
    global $_W;
    $size = $request->param('size', 6);
    $list = $this->model->getListByMid($_W['user']['id'],$size);
    return json(['data' => $list, 'error' => 0, 'message' => 'success']);
}
public function getListByMid($mid,$size = 10){
    $res = $this
      ->alias('c')
      ->field('c.*,b.book_name,b.book_flash,s.section_title')
      ->leftJoin('booksection s','c.chapter_id = s.id')
      ->leftJoin('book b','s.book_id = b.id')
      ->where('c.mid',$mid)
      ->order('c.id desc')
      ->paginate($size);
    return $res;
}

返回数据

{
    "data": {
        "total": 1,
        "per_page": 1,
        "current_page": 1,
        "last_page": 1,
        "data": [
            {
                "id": 105,
                "mid": 55,
                "book_id": 31,
                "chapter_id": 46046,
                "score": 27,
                "create_time": 1561447448,
                "book_name": "桃运村支书",
                "book_flash": "https://cdnxiaoshuo.t.com/FiO6TM0N4kpzKB7tqrDko64ZS4H4",
                "section_title": "第29章 康庄大道"
            }
        ]
    },
    "error": 0,
    "message": "success"
}

方法二

利用limit方法

$curr_page = $request->param('page', 1);
    $size = $request->param('size', 6);
$list = $consume_model->getListByWhere($curr_page, $size, $where);
    $num = $consume_model->getListByWhereCount($where);
    return json(['data' => $list,'num' => $num,'error' => 0, 'message' => 'success']);
public function getListByWhere($curr_page,$limit = 10,$where = null){
    $res = $this
      ->alias('c')
      ->field('c.*,b.book_name,s.section_title')
      ->leftJoin('booksection s','c.chapter_id = s.id')
      ->leftJoin('book b','s.book_id = b.id')
      ->where($where)
      ->order('c.id desc')
      ->limit($limit*($curr_page - 1),$limit)
      ->select()
      ->toArray();
    return $res;
}
public function getListByWhereCount($where = null){
    $count = $this
      ->alias('c')
      ->where($where)
      ->count();
    return $count;
}

返回值

{
    "data": [
        {
            "id": 2,
            "mid": 4,
            "book_id": 4,
            "chapter_id": 22,
            "score": 30,
            "create_time": 0,
            "book_name": "复仇者联盟I",
            "section_title": "第11章  你是睡"
        },
        {
            "id": 1,
            "mid": 4,
            "book_id": 29,
            "chapter_id": 34,
            "score": 20,
            "create_time": 1598999,
            "book_name": "复仇者联盟II",
            "section_title": "第11章  你是睡"
        }
    ],
    "num": 2,
    "total_coin": 50,
    "error": 0,
    "message": "success"
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
php全排列递归算法代码
Oct 09 PHP
PHP迭代器实现斐波纳契数列的函数
Nov 12 PHP
php三维数组去重(示例代码)
Nov 26 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
PHP微信红包API接口
Dec 05 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PDO::errorCode讲解
Jan 28 PHP
PHP7 安装event扩展的实现方法
Oct 08 #PHP
thinkphp5+layui实现的分页样式示例
Oct 08 #PHP
调试php程序的简单步骤
Oct 04 #PHP
用php定义一个数组最简单的方法
Oct 04 #PHP
php输出文字乱码的解决方法
Oct 04 #PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 #PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 #PHP
You might like
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
php判断文件上传图片格式的实例详解
2017/09/30 PHP
尽可能写"友好"的"Javascript"代码
2007/01/09 Javascript
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
使用python生成目录树
2018/03/29 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
python属于软件吗
2020/06/18 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
新奇的小玩意:IWOOT
2016/07/21 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
电信营业员岗位职责
2015/04/14 职场文书
员工离职通知函
2015/04/25 职场文书
离婚案件被告代理词
2015/05/23 职场文书
小学运动会通讯稿
2015/07/18 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书