thinkphp5中要想同时获得查询记录的总数量以及分页的数据, 可以用paginate(), 真的非常方便!

表结构:

CREATE TABLE `t_users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(128) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '登录账号',
`passwd` varchar(128) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
`nickname` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '昵称',
`company` varchar(256) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '公司',
`contact` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '联系人',
`address` varchar(256) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '详细地址',
`city` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '城市',
`country` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '国家',
`province` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '省/州',
`zip_code` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '邮政编码',
`phone` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '电话',
`token` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '登录唯一凭证, 登录时更新',
`check` tinyint(1) DEFAULT '0' COMMENT '0-未通过, 1-通过',
`check_time` timestamp NULL DEFAULT NULL COMMENT '审核时间',
`time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='注册用户表';

表数据截图:

获取记录总数和分页数据:

public function test()
{
$r = db(self::TABLE)->paginate(3, false);
// $r = model(self::TABLE)->paginate(3, false);
print_r($r); $data = [
'total' => $r->total(), // 总记录数
'cur' => $r->currentPage(), // 当前页码
'size' => $r->listRows(), // 每页记录数
'list' => $r->items() // 分页数据
]; print_r($data);
}

截图:

最终运行结果:

cmf\paginator\Bootstrap Object
(
[simple:protected] =>
[items:protected] => think\Collection Object
(
[items:protected] => Array
(
[0] => Array
(
[id] => 1
[email] => 1@163.com
[passwd] => e10adc3949ba59abbe56e057f20f883e
[nickname] =>
[company] =>
[contact] =>
[address] =>
[city] =>
[country] => United Kingdom
[province] =>
[zip_code] =>
[phone] =>
[token] => ae4e61fa4ec3b7fc144603e4ca8e1f83
[check] => 1
[check_time] => 2019-08-21 22:23:16
[time] => 2019-08-19 10:25:18
) [1] => Array
(
[id] => 4
[email] => 1121@163.com
[passwd] => e10adc3949ba59abbe56e057f20f883e
[nickname] =>
[company] =>
[contact] =>
[address] =>
[city] =>
[country] => 日本
[province] =>
[zip_code] =>
[phone] =>
[token] => f1267ace3614544c7eda97e8b831f5ac
[check] => 1
[check_time] =>
[time] => 2019-08-19 12:32:25
) [2] => Array
(
[id] => 7
[email] => 1112312@163.com
[passwd] => e10adc3949ba59abbe56e057f20f883e
[nickname] =>
[company] =>
[contact] =>
[address] =>
[city] =>
[country] => 日本
[province] =>
[zip_code] =>
[phone] =>
[token] => ae0ffcc37d1f6f564e6045892f04a5ea
[check] => 0
[check_time] =>
[time] => 2019-08-19 16:43:13
) ) ) [currentPage:protected] => 1
[lastPage:protected] => 2
[total:protected] => 6
[listRows:protected] => 3
[hasMore:protected] => 1
[options:protected] => Array
(
[var_page] => page
[path] => /admin/users/test
[query] => Array
(
) [fragment] =>
[type] => \cmf\paginator\Bootstrap
[list_rows] => 15
) )
Array
(
[total] => 6
[cur] => 1
[size] => 3
[list] => Array
(
[0] => Array
(
[id] => 1
[email] => 1@163.com
[passwd] => e10adc3949ba59abbe56e057f20f883e
[nickname] =>
[company] =>
[contact] =>
[address] =>
[city] =>
[country] => United Kingdom
[province] =>
[zip_code] =>
[phone] =>
[token] => ae4e61fa4ec3b7fc144603e4ca8e1f83
[check] => 1
[check_time] => 2019-08-21 22:23:16
[time] => 2019-08-19 10:25:18
) [1] => Array
(
[id] => 4
[email] => 1121@163.com
[passwd] => e10adc3949ba59abbe56e057f20f883e
[nickname] =>
[company] =>
[contact] =>
[address] =>
[city] =>
[country] => 日本
[province] =>
[zip_code] =>
[phone] =>
[token] => f1267ace3614544c7eda97e8b831f5ac
[check] => 1
[check_time] =>
[time] => 2019-08-19 12:32:25
) [2] => Array
(
[id] => 7
[email] => 1112312@163.com
[passwd] => e10adc3949ba59abbe56e057f20f883e
[nickname] =>
[company] =>
[contact] =>
[address] =>
[city] =>
[country] => 日本
[province] =>
[zip_code] =>
[phone] =>
[token] => ae0ffcc37d1f6f564e6045892f04a5ea
[check] => 0
[check_time] =>
[time] => 2019-08-19 16:43:13
) ) )

===============================================

另外, paginate中第3个参数里可以配置请求的页码, 即请求指定页数据, 示例如下:

public function test()
{
$r = db(self::TABLE)->alias('a')
->join('users_good b', 'b.uid = a.id')
->field('uid, a.check,b.chinese,b.math')
->paginate(3, false, [
'page' => 2 // 指定请求的页码
]);
print_r($r); $data = [
'total' => $r->total(), // 总记录数
'cur' => $r->currentPage(), // 当前页码
'size' => $r->listRows(), // 每页记录数
'list' => $r->items() // 分页数据
]; print_r($data);
}

thinkphp5 数据库查询之paginate: 同时获取记录总数和分页数据的更多相关文章

  1. ObjectStore onFetch方法获取记录总数

    转自:http://blog.csdn.net/earthhour/article/details/38686029 ObjectStore onFetch方法获取记录总数 require(['doj ...

  2. MySQL高效获取记录总数

    通常mysql获取查询记录总数我们使用如下语句: SELECT COUNT(*) FROM users WHERE k='avs';  或:SELECT id FROM goods WHERE k=' ...

  3. 【Mysql】MySQL高效获取记录总数SQL_CALC_FOUND_ROWS

    用法说明 分页程序一般由两条SQL组成: SELECT COUNT(*) FROM ... WHERE .... SELECT ... FROM ... WHERE LIMIT ... 如果使用SQL ...

  4. SQL语句分组获取记录的第一条数据的方法

    使用Northwind 数据库 首先查询Employees表 查询结果: city列里面只有5个城市 使用ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY CO ...

  5. PHP MYSQL 获取记录总数

    $qid = mysql_query(“SELECT count(aid) as total FROM table group by aid “);//你的查询 $res = mysql_fetch_ ...

  6. 使用rowid和rownum获取记录时要注意的问题

    我们知道.rowid和rownum在Oracle中都是能够被当做伪劣使用的,主要用来定位表中特定的记录,但它们是有差别的,rowid是和行记录的物理地址相应的.而rownum则不是,是通过返回的记录集 ...

  7. [转载]Hibernate如何提升数据库查询的性能

    目录(?)[-] 数据库查询性能的提升也是涉及到开发中的各个阶段在开发中选用正确的查询方法无疑是最基础也最简单的 SQL语句的优化 使用正确的查询方法 使用正确的抓取策略 Hibernate的性能优化 ...

  8. dedeCMS php标签使用说明和数据库查询说明

    1.{dede:php}标签想要输出信息 可以直接使用printf , echo,var_dump 之类的打印出来   赋值给@me 无效 2.结合sql语句使用方法 例:{dede:php} $ro ...

  9. jsp执行数据库查询并分页

    需求: 有一批企业的基本信息需要展示出来,要求一级页以列表形式展示企业清单,点击公司名称后进入二级页面,二级页面展示企业简介和几张图片. 实现效果: 开发环境: Win7,Eclipse,Mysql ...

随机推荐

  1. Echart、Excel、highcharts、jfreechart对比

      Echart Excel highcharts jfreechart 柱状图 √ √ √ √ 条形图 √ √ √ √ 折线图 √ √ √ √ 面积图 √ √ √ √ 散点图 √ √ √ √ 气泡图 ...

  2. Shell脚本之五 基本运算符

    Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...

  3. 基于ZYNQ 的UART中断实验之串口写数据到DDR3中

    1.参考 UG585 网络笔记 2.理论知识 参见上一次实验:基于ZYNQ 的UART中断实验 3.实验目的 练习使用UART的中断实验,并将接收到的数据写入到DDR3中. 4.实验过程 建立工程,设 ...

  4. TP-LINK WR703N OpenWrt 无线配网历程

    ① 创建了两个 Interfaces,名字分别为 lan.wlan0 (可自行设定),一个负责连接 PPPoE,一个负责提供 AP 热点. ② 配置 wlan0 相关 ip 地址,该地址为无线网内网地 ...

  5. 腾讯云IPv6技术拿了个一等奖!1.5亿人已经用上

    中国通信学会在其官网上公布了2019年中国通信学会科学技术奖的评选结果,腾讯云和中国移动通信集团,中国信息通信研究院.以及华为联合申报的“移动互联网IPv6技术攻关及规模应用”项目荣获今年科学技术一等 ...

  6. 第一次使用Vue

    什么是Vue? 接触前端时,一直在想,网页中那么多数据,怎么一次性渲染到页面中?通过js可以实现,但是比较繁琐,需要组合字符串,很麻烦.还有更好的办法吗? 直到我遇见了Vue...... 首次接触到V ...

  7. 【C学习笔记】一

    一.运算符优先级 逻辑非>算术运算符>关系运算符>逻辑运算符>赋值运算符>逗号运算符 逻辑运算符>条件运算符>赋值运算符 对于if的执行语句,如果是一条语句那 ...

  8. vue nexttick的理解和使用场景

    应用场景 需要在视图更新之后,基于新的视图进行操作 文档说明 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM nextTick原理 1.异步说明 V ...

  9. GIT VI操作汇总

    在Git Bash Here中用命令行 pull\push\merge 代码,如果存在冲突或者自动合并时,会自动进入VI界面 1.按下 ESC 键,退出编辑模式,切换到命令模式. 2.输入 :wq , ...

  10. python卸载重新安装,一键安装卸载前的所有安装的第三方插件

    好多小可爱都有这样一个困扰,python有了一个大版本的更新,我也想更新,但是安装的好多第三方的库可怎么办呀,更新之后再去一个一个的安装,那可就烦死了. 在这里我来教大家如何快速去安装python更新 ...