

新闻资讯
行业动态本文详解如何将统计“过去 30 天每日浏览量”的原生 sql 转换为 laravel 的 query builder 写法,涵盖日期截取、分组聚合、排序限制等关键点,并指出常见陷阱与最佳实践。
在 Laravel 中,直接使用 DB::table()(即 Query Builder)是处理此类聚合查询最清晰、高效的方式——相比强行套用 Eloquent 模型,它更贴近 SQL 语义,且避免了模型层不必要的开销。
但需注意:您提供的原始答案中存在严重语法错误,会导致查询失败或结果异常。例如:
)" —— 错误的字符串拼接,date() 是 MySQL 函数,不能加引号;✅ 正确写法(兼容 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();? 关键说明:
? 进阶建议:
总结:Query Builder 是处理复杂聚合查询的首选工具。牢记 selectRaw + groupBy + orderBy 的协同逻辑,避开字符串误引、分组粒度错误等典型坑,即可精准复现原生 SQL 语义。