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 相关文章推荐
在Windows版的PHP中使用ADO
Oct 09 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 PHP
php不写闭合标签的好处
Mar 04 PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
再谈Yii Framework框架中的事件event原理与应用
Apr 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+mysql)
2007/11/23 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
js计算精度问题小结
2013/04/22 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
JavaScript实现Flash炫光波动特效
2015/05/14 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
Python中的探索性数据分析(功能式)
2017/12/22 Python
python函数与方法的区别总结
2019/06/23 Python
python 模拟登陆github的示例
2020/12/04 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
年度考核自我鉴定
2013/11/09 职场文书
八年级音乐教学反思
2014/01/09 职场文书
工程资料员岗位职责
2014/03/10 职场文书
大班开学家长寄语
2014/04/04 职场文书
一岗双责责任书
2014/04/15 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
项目申请汇报材料
2014/08/16 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
自主招生专家推荐信
2015/03/26 职场文书
于丹论语心得观后感
2015/06/15 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书