Laravel Group By和Sum其他列的总值

时间:2015-06-12 11:24:44

标签: php laravel

我的数据库中有一个表,如下所示:

id | date       | amount
========================
1  | 2015-01-26 | 1000
2  | 2015-02-26 | 100
3  | 2014-06-26 | 10

我希望按年度对记录进行分组,然后找出每组数量的总和。

我可以使用以下查询找到这些组:

Fee::orderBy('date', 'DESC')
  ->get()
  ->groupBy(function($date) {
    return Carbon::parse($date->date)->format('Y'); // grouping by years
})

但我无法得到每组人数的总和。

1 个答案:

答案 0 :(得分:4)

害怕我现在无法用雄辩的方式解决这个问题,但这应该适用于查询构建器。它对我有用:

DB::table('fees')
    ->select(DB::raw('YEAR(date) as year'), DB::raw('sum(amount) as total'))
    ->groupBy(DB::raw('YEAR(date)') )
    ->get();

使用与问题相同的日期:

id       date                       amount
 1       2015-01-26                  1000
 2       2015-02-26                  100
 3       2014-06-26                  10

它给出了以下内容:

array:2 [▼
  0 => {#150 ▼
    +"year": 2014
    +"total": "10"
  }
  1 => {#151 ▼
    +"year": 2015
    +"total": "1100"
  }
]