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将数据导入到Foxmail
Oct 09 PHP
一个MYSQL操作类
Nov 16 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
zend framework框架中url大小写问题解决方法
Aug 19 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
Aug 23 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
php字符集转换
Jan 23 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
PHP 计算两个特别大的整数实例代码
May 07 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代码片段
2015/09/24 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
30年同学聚会邀请函
2014/01/25 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
团委工作总结2015
2015/04/02 职场文书
婚育证明格式
2015/06/17 职场文书
小学生读书笔记
2015/07/01 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers