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 无限级数据JSON格式及JS解析
Jul 17 PHP
PHP中图片等比缩放的实例
Mar 24 PHP
PHP中$_SERVER的详细参数与说明介绍
Oct 26 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
PHP简单处理表单输入的特殊字符的方法
Feb 03 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
php生成带logo二维码方法小结
Apr 08 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
php图像处理函数imagecopyresampled用法详解
Dec 02 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 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
Views rows style模板重写代码
2011/05/16 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python实现调度算法代码详解
2017/12/01 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
python 的topk算法实例
2020/04/02 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
综合测评自我鉴定
2013/10/08 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
企业负责人任命书
2014/06/05 职场文书
药品营销策划方案
2014/06/15 职场文书
房产协议书范本2014
2014/09/30 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android