全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

将原生 SQL 查询转换为 Laravel Eloquent 查询的完整指南

本文详解如何将统计“过去 30 天每日浏览量”的原生 sql 转换为 laravel 的 query builder 写法,涵盖日期截取、分组聚合、排序限制等关键点,并指出常见陷阱与最佳实践。

在 Laravel 中,直接使用 DB::table()(即 Query Builder)是处理此类聚合查询最清晰、高效的方式——相比强行套用 Eloquent 模型,它更贴近 SQL 语义,且避免了模型层不必要的开销。

但需注意:您提供的原始答案中存在严重语法错误,会导致查询失败或结果异常。例如:

  • ❌ "date ('created_at')" —— 错误的字符串拼接,date() 是 MySQL 函数,不能加引号;
  • ❌ groupBy("created_at") —— 按完整时间戳分组 ≠ 按日期分组,将导致每天多条记录(因 created_at 含时分秒);
  • ❌ orderBy("created_at","desc") —— 应按日期排序,而非带精度的时间戳,否则分组后排序逻辑错乱;
  • ❌ 缺少 DATE() 函数的正确用法及数据库兼容性处理。

✅ 正确写法(兼容 MySQL)如下:

use Illuminate\Support\Facades\DB;

$viewsByDay = DB::table('views')
    ->selectRaw('DATE(created_at) as day, COUNT(*) as titles')
    ->where('view_type', 'App\\Title')
    ->groupBy('day') // 按别名分组(MySQL 支持),或改用 selectRaw 中的表达式
    ->orderBy('day', 'desc')
    ->limit(30)
    ->get();

? 关键说明:

  • selectRaw() 用于注入原生 SQL 表达式,DATE(created_at) 精确提取日期部分(如 '2025-05-20');
  • groupBy('day') 利用 MySQL 对 SELECT 别名的支持,简洁安全;若需跨数据库兼容(如 PostgreSQL),应改为 groupBy(DB::raw('DATE(created_at)'));
  • orderBy('day', 'desc') 确保按自然日期倒序排列(最新日优先);
  • limit(30) 控制返回条数,符合需求。

? 进阶建议:

  • 若项目已定义 View 模型,可配合 toBase() 获取查询构造器,但无实质优势;
  • 需补全时间范围(如近 30 天内有数据才显示)?可追加 whereBetween('created_at', [now()->subDays(30), now()]);
  • 返回结果中 day 是字符串,如需 Carbon 实例,可在集合中映射转换:->map(fn ($item) => tap($item, fn ($i) => $i->day = \Carbon\Carbon::parse($i->day)))。

总结:Query Builder 是处理复杂聚合查询的首选工具。牢记 selectRaw + groupBy + orderBy 的协同逻辑,避开字符串误引、分组粒度错误等典型坑,即可精准复现原生 SQL 语义。


# mysql  # laravel  # cad  # app  # 工具  # 排列  # carbon  # sql  # select  # date  # 字符串  # map  # table  # postgresql  # 数据库  # 进阶  # 可在  # 此类  # 内有  # 而非  # 如需  # 转换为  # 多条  # 应按  # 如何将 


相关文章: 如何快速启动建站代理加盟业务?  如何用wdcp快速搭建高效网站?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  php json中文编码为null的解决办法  ,网页ppt怎么弄成自己的ppt?  网站制作企业,网站的banner和导航栏是指什么?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何解决VPS建站LNMP环境配置常见问题?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  制作企业网站建设方案,怎样建设一个公司网站?  如何在IIS中配置站点IP、端口及主机头?  名字制作网站免费,所有小说网站的名字?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  建站主机数据库如何配置才能提升网站性能?  平台云上自主建站:模板化设计与智能工具打造高效网站  如何使用Golang安装API文档生成工具_快速生成接口文档  如何在万网ECS上快速搭建专属网站?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  建站主机选哪家性价比最高?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  简单实现Android文件上传  微信小程序制作网站有哪些,微信小程序需要做网站吗?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  如何通过虚拟主机快速搭建个人网站?  建站主机解析:虚拟主机配置与服务器选择指南  常州自助建站工具推荐:低成本搭建与模板选择技巧  如何生成腾讯云建站专用兑换码?  Android自定义控件实现温度旋转按钮效果  平台云上自助建站如何快速打造专业网站?  怎么将XML数据可视化 D3.js加载XML  建站之星如何实现PC+手机+微信网站五合一建站?  北京企业网站设计制作公司,北京铁路集团官方网站?  制作农业网站的软件,比较好的农业网站推荐一下?  建站之星ASP如何实现CMS高效搭建与安全管理?  如何撰写建站申请书?关键要点有哪些?  ,制作一个手机app网站要多少钱?  如何确保西部建站助手FTP传输的安全性?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  香港服务器租用费用高吗?如何避免常见误区?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  网站制作公司排行榜,四大门户网站排名?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何在腾讯云服务器快速搭建个人网站?  网站制作网站,深圳做网站哪家比较好?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  建设网站制作价格,怎样建立自己的公司网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。