tp5.1 框架数据库-数据集操作实例分析


Posted in PHP onMay 26, 2020

本文实例讲述了tp5.1 框架数据库-数据集操作。分享给大家供大家参考,具体如下:

数据库的查询结果也就是数据集,默认的配置下,数据集的类型是一个二维数组,我们可以配置成数据集类,就可以支持对数据集更多的对象化操作,需要使用数据集类功能,可以配置数据库的resultset_type参数如下:

return [
  // 数据库类型
  'type'    => 'mysql',
  // 数据库连接DSN配置
  'dsn'     => '',
  // 服务器地址
  'hostname'  => '127.0.0.1',
  // 数据库名
  'database'  => 'thinkphp',
  // 数据库用户名
  'username'  => 'root',
  // 数据库密码
  'password'  => '',
  // 数据库连接端口
  'hostport'  => '',
  // 数据库连接参数
  'params'   => [],
  // 数据库编码默认采用utf8
  'charset'   => 'utf8',
  // 数据库表前缀
  'prefix'   => 'think_',
  // 数据集返回类型
  'resultset_type' => 'collection',
];

返回的数据集对象是think\Collection,提供了和数组无差别用法,并且另外封装了一些额外的方法。

在模型中进行数据集查询,全部返回数据集对象,但使用的是think\model\Collection类,但用法是一致的。

可以直接使用数组的方式操作数据集对象,例如:

// 获取数据集
$users = Db::name('user')->select();
// 直接操作第一个元素
$item = $users[0];
// 获取数据集记录数
$count = count($users);
// 遍历数据集
foreach($users as $user){
  echo $user['name'];
  echo $user['id'];
}

V5.1.23+版本开始,你可以在查询的时候指定是否需要返回数据集(无需配置resultset_type参数)

// 获取数据集
$users = Db::name('user')->fetchCollection()->select();
// 直接操作第一个元素
$item = $users[0];
// 获取数据集记录数
$count = count($users);
// 遍历数据集
foreach($users as $user){
  echo $user['name'];
  echo $user['id'];
}

V5.1.24+版本开始,fetchCollection方法支持传入使用的集合类名称。

需要注意的是,如果要判断数据集是否为空,不能直接使用empty判断,而必须使用数据集对象的isEmpty方法判断,例如:

$users = Db::name('user')->select();
if($users->isEmpty()){
  echo '数据集为空';
}

Collection类包含了下列主要方法:

方法 描述
isEmpty 是否为空
toArray 转换为数组
all 所有数据
merge 合并其它数据
diff 比较数组,返回差集
flip 交换数据中的键和值
intersect 比较数组,返回交集
keys 返回数据中的所有键名
pop 删除数据中的最后一个元素
shift 删除数据中的第一个元素
unshift 在数据开头插入一个元素
reduce 通过使用用户自定义函数,以字符串返回数组
reverse 数据倒序重排
chunk 数据分隔为多个数据块
each 给数据的每个元素执行回调
filter 用回调函数过滤数据中的元素
column 返回数据中的指定列
sort 对数据排序
shuffle 将数据打乱
slice 截取数据中的一部分

 

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php简单定时执行任务的实现方法
Feb 23 PHP
php中explode的负数limit用法分析
Feb 27 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
Aug 11 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
基于laravel缓冲cache的用法详解
Oct 23 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 #PHP
tp5.1 框架join方法用法实例分析
May 26 #PHP
tp5.1框架数据库子查询操作实例分析
May 26 #PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 #PHP
Laravel 修改验证异常的响应格式实例代码详解
May 25 #PHP
tp5.1 框架查询表达式用法详解
May 25 #PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 #PHP
You might like
自定义PHP分页函数
2006/10/09 PHP
又一个PHP实现的冒泡排序算法分享
2014/08/21 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
js href的用法
2010/05/13 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
毕业生个人投资创业计划书
2014/01/04 职场文书
2014村务公开实施方案
2014/02/25 职场文书
七夕情人节促销方案
2014/06/07 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
追悼会答谢词范文
2015/09/29 职场文书