如何在 Laravel 中清洗数据库查询返回的时间数组

发布时间 - 2026-01-30 00:00:00    点击率:

本文介绍如何将 laravel 查询结果中包含完整时间戳(如 `2025-02-21 07:40:16`)的键或字段,提取并格式化为仅保留时分秒(如 `07:40:16`)的干净数组,适用于图表渲染、前端展示等场景。

在 Laravel 中处理数据库时间字段时,常需对原始 created_at 等 Carbon 实例进行格式化清洗,而非依赖字符串截取。原代码使用 pluck('RSSI', 'created_at') 将时间作为数组键,虽简洁但不利于后续时间格式化(因键无法直接调用 ->format() 方法)。更推荐的方式是显式获取模型实例,再逐项调用 Carbon 的 format() 方法。

以下是优化后的完整实现:

public function singleDev(Device $deviceID)
{
    // 使用 select 明确字段,避免冗余数据;get() 返回 Collection
    $data = DataFromRasp::select('RSSI', 'created_at')
        ->where('MAC', 'C4:A5:DF:24:05:7E')
        ->get();

    $time_array = [];
    $rssi_array = [];
    $cnt = 0;

    foreach ($data as $item) {
  

// ✅ 安全提取并格式化时间:Carbon 实例支持 format() $time_array[] = $item->created_at->format('H:i:s'); $rssi_array[] = $item->RSSI; // ⚠️ 注意:原代码中 if($value < -60) 的 $value 未定义,应改为 $item->RSSI if ($item->RSSI < -60) { $cnt++; if ($cnt >= 2) { // 可在此添加触发逻辑,如告警、记录等 } } } // 调试输出清洗后的时间数组(如 ['07:40:16', '07:41:22', ...]) dd($time_array); return view('backend.auth.user.singleDevice', compact('time_array', 'rssi_array')); }

关键改进说明:

  • 避免 pluck() 作键值映射:pluck('RSSI', 'created_at') 会将 created_at 的原始字符串(如 "2025-02-21 07:40:16")直接用作数组键,而该键无法链式调用 Carbon 方法;改用 get() 获取模型集合,确保 created_at 是可操作的 Carbon 实例。
  • 正确使用 Carbon 格式化:$item->created_at->format('H:i:s') 输出 24 小时制时分秒(如 07:40:16);若需 12 小时制加 AM/PM,可用 'g:i:s A'。
  • 修复变量引用错误:原循环中 if ($value RSSI。
  • 性能提示:若数据量较大,可考虑使用 map() 链式处理替代 foreach,提升可读性:
    $time_array = $data->map(fn($item) => $item->created_at->format('H:i:s'))->values()->toArray();
    $rssi_array = $data->pluck('RSSI')->toArray();

最终,$time_array 将是一个纯字符串数组,每个元素均为标准化的 HH:ii:ss 格式,可直接传递给前端图表库(如 Chart.js)或用于时间序列分析。


# laravel  # js  # 前端  # mac  # 字符串数组  # carbon  # if  # foreach  # format  # 字符串  # 循环  # map 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Linux系统命令中screen命令详解  如何在Windows环境下新建FTP站点并设置权限?  如何在Windows服务器上快速搭建网站?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何在建站之星网店版论坛获取技术支持?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  EditPlus中的正则表达式实战(5)  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  ,在苏州找工作,上哪个网站比较好?  如何在香港服务器上快速搭建免备案网站?  如何快速重置建站主机并恢复默认配置?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  如何在IIS中新建站点并配置端口与物理路径?  在centOS 7安装mysql 5.7的详细教程  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  Laravel如何配置和使用缓存?(Redis代码示例)  浅谈javascript alert和confirm的美化  微信小程序 wx.uploadFile无法上传解决办法  高防服务器:AI智能防御DDoS攻击与数据安全保障  Laravel如何使用Vite进行前端资源打包?(配置示例)  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  如何快速搭建自助建站会员专属系统?  linux top下的 minerd 木马清除方法  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何在阿里云域名上完成建站全流程?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  如何快速选择适合个人网站的云服务器配置?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Android自定义控件实现温度旋转按钮效果  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  海南网站制作公司有哪些,海口网是哪家的?  Laravel如何使用查询构建器?(Query Builder高级用法)  Android利用动画实现背景逐渐变暗  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何为不同团队 ID 动态生成多个独立按钮  Laravel如何生成URL和重定向?(路由助手函数)  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  郑州企业网站制作公司,郑州招聘网站有哪些?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  高端网站建设与定制开发一站式解决方案 中企动力  php 三元运算符实例详细介绍