如何使用Laravel按日期对记录进行分组和计数?

时间:2018-06-25 15:54:42

标签: sql database laravel eloquent

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

我需要根据每月的状态来获取问题的数量。 我想得到这样的东西:

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

我不知道是否有更好的方法,对于如何检索数据我可以提出建议。基本上,我正在创建一个管理仪表盘,并希望在图表中显示数据。

1 个答案:

答案 0 :(得分:0)

假设您正在使用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');