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+Html+缓存
Dec 20 PHP
php与php MySQL 之间的关系
Jul 17 PHP
PHP Global变量定义当前页面的全局变量实现探讨
Jun 05 PHP
PHP解析RSS的方法
Mar 05 PHP
php实现微信公众号无限群发
Oct 11 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
PHP实现数组array转换成xml的方法
Jul 19 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
is_file和file_exists效率比较
Mar 14 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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
JAVASCRIPT 对象的创建与使用
2021/03/09 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
javascript 模拟点击广告
2010/01/02 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
2016/11/17 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
详解在Python中处理异常的教程
2015/05/24 Python
使用requests库制作Python爬虫
2018/03/25 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
幼儿园中班上学期评语
2014/04/18 职场文书
秋菊打官司观后感
2015/06/03 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS