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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
Destoon实现多表查询示例
Aug 21 PHP
PHP生成条形图的方法
Dec 10 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
php超快高效率统计大文件行数
Jul 05 PHP
php实现三级级联下拉框
Apr 17 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
Jun 12 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
php实现统计IP数及在线人数的示例代码
Jul 22 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 身份验证方面的函数
2009/10/11 PHP
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
js读取本地文件的实例
2017/12/22 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
Python中的匿名函数使用简介
2015/04/27 Python
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
中国宠物用品商城:E宠商城
2016/08/27 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
小学生演讲稿
2014/01/12 职场文书
驾驶员岗位职责
2014/01/29 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸