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调用三种数据库的方法(3)
Oct 09 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
php 向访客和爬虫显示不同的内容
Nov 09 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 PHP
PHP empty函数报错解决办法
Mar 06 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
Mar 17 PHP
PHP中Trait及其应用详解
Feb 14 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 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
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
jquery提升性能最佳实践小结
2010/12/06 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
在Python中使用SQLite的简单教程
2015/04/29 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python笔试面试题小结
2019/09/07 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
暑期教师培训方案
2014/06/07 职场文书
小组名称和口号
2014/06/09 职场文书
大专生自荐书范文
2014/06/22 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
忠诚教育学习心得体会
2016/01/23 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电