当前位置: 首页 > 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.lqws.cn/news/578863.html

相关文章:

  • PHP学习笔记(十二)
  • 【Java面试】10GB,1GB内存,如何排序?
  • 时序数据库IoTDB监控指标采集与可视化指南
  • HTML中的<div>元素
  • 云效DevOps vs Gitee vs 自建GitLab的技术选型
  • docker安装MySQL,创建MySQL容器
  • APP 内存测试--Android Profiler实操(入门版)
  • 【解析】 微服务测试工具Parasoft SOAtest如何为响应式架构助力?
  • 2025年数字信号、计算机通信与软件工程国际会议(DSCCSE 2025)
  • [免费]微信小程序停车场预约管理系统(Springboot后端+Vue3管理端)【论文+源码+SQL脚本】
  • Instrct-GPT 强化学习奖励模型 Reward modeling 的训练过程原理实例化详解
  • 【Cyberstrikelab】lab2
  • 百胜软件获邀走进华为,AI实践经验分享精彩绽放
  • 使用 C++ 和 OpenCV 构建驾驶员疲劳检测软件
  • C++ STL之string类
  • 如何让宿主机完全看不到Wi-Fi?虚拟机独立联网隐匿上网实战!
  • Webpack优化详解
  • 赋能低压分布式光伏“四可”建设,筑牢电网安全新防线
  • 爬虫详解:Aipy打造自动抓取代理工具
  • UI前端与数字孪生融合新趋势:智慧医疗的可视化诊断辅助
  • 2025年XXE攻击全面防御指南:从漏洞原理到智能防护实践
  • python 利用socketio(WebSocket协议)实现轻量级穿透方案
  • GO 语言学习 之 Map
  • PyTorch 中 nn.Linear() 参数详解与实战解析(gpt)
  • K8s环境下基于Nginx WebDAV与TLS/SSL的文件上传下载部署指南
  • 极易搭建的自助Git服务Gogs
  • LeetCode 594. Longest Harmonious Subsequence
  • Hyperledger Fabric 入门笔记(二十一)Fabric V2.5 使用K8S部署测试网络
  • UI_NGUI_三大基础控件
  • 祛魅 | 在祛魅中成长,在成长中祛魅