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
为查询结果建立向后/向前按钮
Oct 09 PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
php强制运行广告的方法
Dec 01 PHP
php中的抽象方法和抽象类
Feb 14 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
YII框架页面缓存操作示例
Apr 29 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
Aug 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
把77A收信机改造成收音机
2021/03/02 无线电
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
javascript中字符串的定义示例代码
2013/12/19 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
python中的装饰器详解
2015/04/13 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
python实现键盘输入的实操方法
2019/07/16 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
详解python datetime模块
2020/08/17 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
C#中的验证控件有几种
2014/03/08 面试题
行政人员岗位职责
2013/12/08 职场文书
新闻编辑求职信
2014/04/09 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
领导欢迎词致辞
2015/01/23 职场文书
计生个人工作总结
2015/02/28 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python