当前位置: 首页 > news >正文

【PHP】.Hyperf 框架-collection 集合数据(内置函数归纳-实用版)

📌 Article::query()->where('article_id', 6)->select()->first()
  1. ✍️ 进行数据结果的循环,遍历
1.each()
方法遍历集合中的项目并将每个项目传递给闭包,进行处理数据
Article::query()->get()->each(function ($item) {// 可以直接执行sql 数据$item->content = str_replace('<img', '<img style="max-width:100%"', $item->content);$item->save();// 不可以直接进行数据的格式化});2.map()
该 map 方法遍历集合并将每一个值传入给定的回调函数。该回调函数可以任意修改集合项并返回,从而生成被修改过集合项的新集合(要有接收变量。它不会更改原数据)Article::query()->get()->map(function ($item, $key) {$item->created_at = strtotime($item->created_at);
});

💡 但其实我觉得都不好用。还不如直接toArray(),再用foreach。有的时候情况比较复杂
需要多个条件,进行数据分析。比如一个班的学生。要求获取性别分类。年龄分类。我觉得一个循环就够了。没有必要多次调用这些
遍历方法进行遍历获取。当然 如果说 闭包中使用引用。那就当我没说


$groupBySex = []
$groupByAge = []Article::query()->get()->map(function ($item, $key) use(&$groupBySex, &$groupByAge) {$item->created_at = strtotime($item->created_at);if ( $item->sex === '男' ) {$groupBySex['boy'] = $item}else {$groupByAge['sex'] = $item}
});

2.✍️ 对数据进行分组(还行挺实用的)

1.groupby
Article::query()->get()->groupBy('article_id')
// 將id提取出来作为Key
['account-x10' => [['account_id' => 'account-x10', 'product' => 'Chair'],['account_id' => 'account-x10', 'product' => 'Bookcase'],],'account-x11' => [['account_id' => 'account-x11', 'product' => 'Desk'],],]
2. keyby
Article::query()->get()->keyby('article_id')
// 将article_id 提取出来作为keykeyBy 和 groupBy 主要的区别在于,如果说遇到相同重复的key 的时候。 keyBy会用最新的。 groupBy 会保留,在同一个键值数组内作为一维数组
$collection = collect([['product' => 'Desk', 'price' => 200],['product' => 'Chair', 'price' => 100],['product' => 'Desk', 'price' => 150]
]);$grouped = $collection->groupBy('product');
$keyed = $collection->keyBy('product');/*
['Desk' => [['product' => 'Desk', 'price' => 200],['product' => 'Desk', 'price' => 150]],'Chair' => [['product' => 'Chair', 'price' => 100]]
]
*//*
['Desk' => ['product' => 'Desk', 'price' => 150],'Chair' => ['product' => 'Chair', 'price' => 100]
]
*/

3.✍️ 将获得的数据二维变一维 (也挺实用的)

1. flatten
将数据从二维变成一维。
$collection = collect(['name' => 'taylor','languages' => ['php', 'javascript']
]);$flattened = $collection->flatten();$flattened->all();// ['taylor', 'php', 'javascript'];场景 比如获取多条记录的id值后。直接将这些id,直接展开
Article::query()->select(['id'])->get()->flatten();// 就能得到[1,2,3,4,5,6]

4.✍️ 获取集合内的某一列的数据

1. pluck
该 pluck 可以获取集合中指定键对应的所有值:
$collection = collect([['product_id' => 'prod-100', 'name' => 'Desk'],['product_id' => 'prod-200', 'name' => 'Chair'],
]);$plucked = $collection->pluck('name');$plucked->all();// ['Desk', 'Chair']

5.✍️ 直接排序(有的时候有用)但很多情况数据库数据 就直接用 order() 排序。直接排序了

1. sortBy
Article::query()->sortBy('views')
Article::query()->sortBy('point')

6.✍️ 创建collection(初始化)

$collection = Collection::wrap('John Doe');

💡 其他的使用不怎么竟然用的到。如果很复杂的。可能更喜欢使用toArray() 转化成为数组使用

http://www.lryc.cn/news/577144.html

相关文章:

  • uniapp小程序蓝牙打印通用版(集成二维码打印)
  • Day113 切换Node.js版本、多数据源配置
  • 服务器被入侵的常见迹象有哪些?
  • AdGuard Home 安装及使用
  • SimLOD代码精读(二)建立Octree之Splitting Pass分裂阶段
  • 永磁同步电机无速度算法--基于带相位补偿的鉴相重构锁相环的滑模观测器
  • 华为云Flexus+DeepSeek征文 | 基于华为云Dify-LLM搭建知识库问答助手
  • 深入解析TCP:可靠传输的核心机制与实现逻辑
  • LaTeX 常用宏包(数学论文场景)
  • MySQL索引失效场景
  • NLP自然语言处理 01 文本预处理
  • 现代 JavaScript (ES6+) 入门到实战(三):字符串与对象的魔法升级—模板字符串/结构赋值/展开运算符
  • 【c/c++1】数据类型/指针/结构体,static/extern/makefile/文件
  • 【c/c++3】类和对象,vector容器,类继承和多态,systemd,stdboost
  • PCB工艺学习与总结-20250628
  • 【blender】使用bpy对一个obj的不同mesh进行不同的材质贴图(涉及对bmesh的操作)
  • 利用deepseek学术搜索
  • git lfs 提交、拉取大文件
  • 现代 JavaScript (ES6+) 入门到实战(五):告别回调地狱,Promise 完全入门
  • 机器学习在智能电网中的应用:负荷预测与能源管理
  • Redis Cluster Gossip 协议
  • ROS 避障技术介绍
  • spring-ai-alibaba 1.0.0.2 学习(三)——配置
  • Transformer超详细全解!含代码实战
  • Python爬虫-爬取汽车之家全部汽车品牌及车型数据
  • 机电一体化论文写作实战指南:从创新设计到工程验证的完整路径
  • 爬虫实战之图片及人物信息爬取
  • VMware设置虚拟机为固定IP
  • 06_注意力机制
  • 1.认识Docker