我有一个包含以下数据的表:
+--------|-----------|-------------+
| id | date | total |
|--------|-----------|-------------|
| 1 | 2016-01-01| 10 |
|--------|-----------|-------------|
| 2 | 2016-01-01| 20 |
|--------|-----------|-------------|
| 3 | 2016-01-02| 25 |
+----------------------------------+
我想获得以下结果:
Date : 2016-01-01 | Total : 30
Date : 2016-01-02 | Total : 25
如果添加了另一个日期,它也会显示。 它必须只提供该日期的日期和总金额。
这是我尝试过的,它打印出每个日期以及每个日期,而不是1日期与当天的主要日期。
$data = DB::table('records')
->select(DB::raw('sum(total) as total'), 'id', 'date')
->where('date', '>=', \Carbon\Carbon::now()->startOfMonth())
->groupBy('date')
->orderBy('id', 'ASC')
->get();
THEN
foreach($data as $row){
echo $row->date . "<br>";
echo $row->total;
};
答案 0 :(得分:0)
这将为您提供所需的数据:
$data = DB::table('records')
->select(DB::raw('date, SUM(total) as total'))
->groupBy('date')
->get();
示例输出(使用我自己的测试数据):
[
{
"date": "2016-09-17",
"total": "30"
},
{
"date": "2016-09-18",
"total": "23"
},
{
"date": "2016-09-19",
"total": "593"
}
]
答案 1 :(得分:0)
因为日期实际上是日期时间,所以我为此创建了一个新查询,该查询将按日期分组(截至当天)并在单个查询中获得总计。这不是很有说服力,但经过一些研究,我认为这可能是一次性完成这项工作的最简单方法。
$data = DB::table('records')
->select(DB::raw('date, SUM(total) as total'))
->groupBy(DB::raw('DATE(date)'))
->get();
return var_dump($data);