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压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 PHP
php 邮件发送问题解决
Mar 22 PHP
php对象在内存中的存在形式分析
Feb 03 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
Nov 16 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 PHP
vmware linux系统安装最新的php7图解
Apr 14 PHP
PHP 7.4 新语法之箭头函数实例详解
May 09 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
php读取xml实例代码
2010/01/28 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
详解Python3中ceil()函数用法
2019/02/19 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
后勤人员自我鉴定
2013/10/20 职场文书
优秀广告词大全
2014/03/19 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
幸福家庭标语
2014/06/27 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
影视后期实训报告
2014/11/05 职场文书
关于感谢信的范文
2015/01/23 职场文书