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之第一天
Oct 09 PHP
php横向重复区域显示二法
Sep 25 PHP
《PHP编程最快明白》第八讲:php启发和小结
Nov 01 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
php实现检查文章是否被百度收录
Jan 27 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
PHP中把有符号整型转换为无符号整型方法
May 27 PHP
PHP chop()函数讲解
Feb 11 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 09 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 数组的指针操作实现代码
2011/02/08 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
js 实现打印网页中定义的部分内容的代码
2010/04/01 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
jQuery实现表格隔行换色
2018/09/01 jQuery
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
python 内置函数filter
2017/06/01 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
python opencv之SURF算法示例
2018/02/24 Python
python版本的仿windows计划任务工具
2018/04/30 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
Python 实现简单的客户端认证
2020/07/29 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
C语言面试题
2013/05/19 面试题
测量工程专业求职信
2014/02/24 职场文书
《春晓》教学反思
2014/04/20 职场文书
Redis基本数据类型String常用操作命令
2022/06/01 Redis