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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
玩转虚拟域名◎+ .
Oct 09 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
PHP验证码类ValidateCode解析
Jan 07 PHP
php实现socket推送技术的示例
Dec 20 PHP
PHP的微信支付接口使用方法讲解
Mar 08 PHP
在laravel中使用with实现动态添加where条件
Oct 10 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
极典R601SW收音机
2021/03/02 无线电
PHP基础之运算符的使用方法
2013/04/28 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
用PHP代码给图片加水印
2015/07/01 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
python批量修改ssh密码的实现
2019/08/08 Python
python 字符串常用函数详解
2019/09/11 Python
python如何变换环境
2020/07/21 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
中学生差生评语
2014/01/30 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
债务纠纷起诉书
2015/05/20 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
JS中如何优雅的使用async await详解
2021/10/05 Javascript
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python