Laravel - 每日、每周、每月和每年的收入报告

如何运行 Laravel Eloquent 查询来检索每日、每周、每月和每年的收入报告。

表:收入

身份证 | 频道 | 金额 | created_at

1 | 大理石| 3400 | 12 年 9 月 10 日

2 | 黄金 | 3400 | 8/10/12

3 | 大理石| 4500 | 07/10/12

4 | 银 | 3200 | 22/09/12

5 | 银 | 3400 | 12 年 9 月 10 日

6 | 银 | 790 | 22/09/12

7 | 黄金 | 1000 | 9/08/12

8 | 大理石| 9000 | 22/09/12

预期结果:以下是不准确的示例结果

日期 | 频道 | 每周收入| 月收入| 年收入| 总收入

2/2/2017 | 黄金 | 200 | 5400 | 3244 | 90222

日期 | 银 | 600 | 4300 | 983 | 10000

我想对上面解释的金额(收入)求和,也许按频道和 created_at(日期)分组。我如何编写雄辩的查询并在使用 created_at 之间按日期过滤。它应该在控制器中完成。


慕田峪9158850
浏览 229回答 1
1回答

catspeake

如果您的频道有限(如 5-20),则使用以下代码:<?php$items = Revenue::groupBy('channel')->get(['channel']);$re = [];foreach ($items as $key => $value) {&nbsp; &nbsp; $re['daily'][$value] = Revenue::where('channel',$value)->whereDate('created_at',date('Y-m-d'))->sum('amount');&nbsp; &nbsp; $re['weekly'][$value] = Revenue::where('channel',$value)->whereBetween('date', [&nbsp; &nbsp; &nbsp; &nbsp; Carbon::parse('last monday')->startOfDay(),&nbsp; &nbsp; &nbsp; &nbsp; Carbon::parse('next friday')->endOfDay(),&nbsp; &nbsp; ])->sum('amount');&nbsp; &nbsp; $re['monthly'][$value] = Revenue::where('channel',$value)->whereMonth('created_at',date('m'))->sum('amount');&nbsp; &nbsp; $re['yearly'][$value] = Revenue::where('channel',$value)->whereYear('created_at',date('Y'))->sum('amount');}var_dump($re);在这段代码中,我们首先分离通道,然后使用它们来计算所需的结果。顺便说一句,代码是要测试的。
打开App,查看更多内容
随时随地看视频慕课网APP