如何使用Laravel按日期分组和统计记录?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Laravel按日期分组和统计记录?相关的知识,希望对你有一定的参考价值。

我有一个问题表,它有一列created_at,状态可以是'打开'或'关闭'

我需要根据每月的状态来计算问题。我想得到这样的东西:

January 2018: {
  open: 300,
  closed: 28,
},
February 2018: {
  open: 250,
  closed: 80
}

我不知道是否有更好的方法,我愿意接受如何检索数据的建议。基本上我正在创建一个管理仪表板,并希望在图表中显示数据。

答案

假设您使用的是mysql

$months = Issue::select(
    DB::raw("date_format(created_at, '%M %Y') month"),
    DB::raw("sum(if(status = 'Open', 1, 0)) open"),
    DB::raw("sum(if(status = 'Closed', 1, 0)) closed")
)->groupBy('month')->get();

您可以使用keyBy()设置密钥:

$months = $months->keyBy('month');

以上是关于如何使用Laravel按日期分组和统计记录?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 选择列,然后按日期对列值进行分组

Laravel 按日期分组,如 MySQL 查询 GROUP BY MONTH(fields) [关闭]

如何在 Laravel 中按日期排序消息

mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法

MySQL实现按天分组统计,提供完整日期列表,无数据自动补0

Laravel:如何通过选择两列进行分组具有不同的值