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 相关文章推荐
支持php4、php5的mysql数据库操作类
Jan 10 PHP
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
检测png图片是否完整的php代码
Sep 06 PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
Thinkphp关闭缓存的方法
Jun 26 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
PHP+JS实现的商品秒杀倒计时用法示例
Nov 15 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
java解析json方法总结
May 16 PHP
使用laravel的migrate创建数据表的方法
Sep 30 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php 发送带附件邮件示例
2014/01/23 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
JavaScript事件 "事件对象"的注意要点
2016/01/14 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
Python中用Decorator来简化元编程的教程
2015/04/13 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python 基础知识之字符串处理
2017/01/06 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
详解Python流程控制语句
2020/10/28 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
几个判断型的面试题
2012/07/03 面试题
《姥姥的剪纸》教学反思
2014/02/25 职场文书
黄金搭档广告词
2014/03/21 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
让子弹飞观后感
2015/06/11 职场文书
2016新年感言
2015/08/03 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android