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 批量删除 sql语句
Jun 05 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
PHP中echo和print的区别
Aug 28 PHP
php使用iconv中文截断问题的解决方法
Feb 11 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
Mar 15 PHP
laravel执行php artisan migrate报错的解决方法
Oct 09 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
PHP页面静态化――纯静态与伪静态用法详解
Jun 05 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
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
node.js实现快速截图
2016/08/27 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
Vue页面骨架屏的实现方法
2018/05/22 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
2020/07/21 Javascript
python标准日志模块logging的使用方法
2013/11/01 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
Python Web框架之Django框架Model基础详解
2019/08/16 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
Django操作session 的方法
2020/03/09 Python
Python matplotlib可视化实例解析
2020/06/01 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
Android面试宝典
2013/08/06 面试题
2019年分享net面试的经历和题目
2016/08/07 面试题
办公室内勤岗位职责范本
2013/12/09 职场文书
教师申诉制度
2014/01/29 职场文书
环保专项行动方案
2014/05/12 职场文书
中秋晚会活动方案
2014/08/31 职场文书
2014年图书室工作总结
2014/12/09 职场文书
党章学习心得体会2016
2016/01/14 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
企业开发CSS命名BEM代码规范实践
2022/02/12 HTML / CSS