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语法(1)
Oct 09 PHP
FleaPHP的安全设置方法
Sep 15 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
Oct 15 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
php数组添加元素方法小结
Dec 20 PHP
PHP安装memcached扩展笔记
May 28 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
php抽象方法和普通方法的区别点总结
Oct 13 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中取得文件的后缀名?
2012/02/20 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
php实现的简单日志写入函数
2015/03/31 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
jQuery ajax cache缓存问题
2010/07/01 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
node crawler如何添加promise支持
2020/02/01 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
在漏洞利用Python代码真的很爽
2007/08/26 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
python的命名规则知识点总结
2019/10/04 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
如何利用python发送邮件
2020/09/26 Python
Python 实现进度条的六种方式
2021/01/06 Python
单身旅行者的单身假期:Just You
2018/04/08 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
物业管理求职自荐信
2013/09/25 职场文书
精彩的广告词
2014/03/19 职场文书
无偿献血倡议书
2014/04/14 职场文书
会计求职信
2014/05/29 职场文书
应届大专生求职信
2014/06/26 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
大学生自荐材料范文
2014/12/30 职场文书
教师节大会主持词
2015/07/06 职场文书