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应用提速面面观
Oct 09 PHP
PHP数组交集的优化代码分析
Mar 06 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
PHP实现下载功能的代码
Sep 29 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
PHP英文字母大小写转换函数小结
May 03 PHP
Zend Framework页面缓存实例
Jun 25 PHP
PHP exif扩展方法开启详解
Jul 28 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
详解YII关联查询
Jan 10 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/04/28 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
PHP开发注意事项总结
2015/02/04 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
python字符串,数值计算
2016/10/05 Python
Python数据操作方法封装类实例
2017/06/23 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
QML实现钟表效果
2020/06/02 Python
浅析Python迭代器的高级用法
2020/07/16 Python
如何利用python生成MD5并去重
2020/12/07 Python
HTML5标签大全
2016/11/23 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
公务员培训自我鉴定
2014/02/01 职场文书
教堂婚礼主持词
2014/03/14 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
创业计划书之花店
2019/09/20 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
图文详解matlab原始处理图像几何变换
2021/07/09 Python
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server