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 相关文章推荐
如何使用脚本模仿登陆过程
Nov 22 PHP
PHP 字符串操作入门教程
Dec 06 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
PHP中trim()函数简单使用指南
Apr 16 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
PHP中include/require/include_once/require_once使用心得
Aug 28 PHP
php面向对象的用户登录身份验证
Jun 08 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 PHP
PHP项目多语言配置平台实现过程解析
May 18 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学习之数组的定义和填充
2011/04/17 PHP
php计算十二星座的函数代码
2012/08/21 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Python求解平方根的方法
2015/03/11 Python
python递归计算N!的方法
2015/05/05 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
什么是规则表达式
2012/05/03 面试题
经理职责范文
2013/11/08 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
开除通知书范本
2015/04/25 职场文书
matplotlib画混淆矩阵与正确率曲线的实例代码
2021/06/01 Python
Go web入门Go pongo2模板引擎
2022/05/20 Golang