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+SqlServer实现分页显示
Oct 09 PHP
Joomla下利用configuration.php存储简单数据
May 19 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
php制作中间带自己定义图片二维码的方法
Jan 27 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
Mar 18 PHP
php封装的page分页类完整实例
Oct 18 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
PHP实现简单的计算器
Aug 28 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
学习使用curl采集curl使用方法
2012/01/11 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
javascript 数组排序函数
2009/08/20 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
Python enumerate遍历数组示例应用
2008/09/06 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
python能做什么 python的含义
2019/10/12 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
世界汽车零件:World Car Parts
2019/09/04 全球购物
国旗下的讲话演讲稿
2014/05/08 职场文书
技校毕业生自荐书
2014/05/23 职场文书
酒店端午节活动方案
2014/08/26 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
刑事上诉状范文
2015/05/22 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
Django基础CBV装饰器和中间件
2022/03/22 Python