Laravel 查询生成器按天计算行数 SQL db::raw
Posted
技术标签:
【中文标题】Laravel 查询生成器按天计算行数 SQL db::raw【英文标题】:Laravel query builder count rows by day SQL db::raw 【发布时间】:2021-06-01 08:33:56 【问题描述】:我有一个 Laravel 8 应用程序,我需要计算每天的总应用程序数量并以最有效的方式输出数据计数,例如,第一天有 500 个应用程序,第二天有 1,000 个应用程序,然后第四,取决于每天有多少应用程序。
我使用DB::raw()
来计算我的行数,但是,Laravel 的时间戳默认包括小时、分钟和秒作为日期的一部分,所以这对我不起作用,我需要格式化排除此日期并仅包含日期。
我的查询似乎没有返回任何内容,也没有错误,所以我认为我的第一个 DB::raw()
有问题,它似乎根本没有格式化 created_at
列,这是什么我失踪了?
Application::whereBetween('created_at', [$from, $to])
->select(DB::raw('DATE_FORMAT("created_at, %Y-%m-%d")'), DB::raw('count(*) as applications'))
->groupBy('created_at')
->get();
【问题讨论】:
【参考方案1】:你可以使用 groupByRaw()
Application::whereBetween('created_at', [$from, $to])
->select(DB::raw('DATE_FORMAT(created_at, "%Y-%m-%d")'), DB::raw('count(*) as applications'))
->groupByRaw('DATE_FORMAT(created_at, "%Y-%m-%d")')
->get();
另外,您可以使用 selectRaw() 代替 select(DB::raw)
【讨论】:
我得到的错误是:Syntax error or access violation: 1582 Incorrect parameter count in the call to native function 'DATE_FORMAT'
数据库中的 created_at
是 Laravel 的默认格式,为:2021-06-01 09:10:42
那是select,请改成DATE_FORMAT(created_at, "%Y-%m-%d")
以上是关于Laravel 查询生成器按天计算行数 SQL db::raw的主要内容,如果未能解决你的问题,请参考以下文章