为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕田峪9158850 2021-09-18 13:51:54
如何运行 Laravel Eloquent 查询来检索每日、每周、每月和每年的收入报告。表:收入身份证 | 频道 | 金额 | created_at1 | 大理石| 3400 | 12 年 9 月 10 日2 | 黄金 | 3400 | 8/10/123 | 大理石| 4500 | 07/10/124 | 银 | 3200 | 22/09/125 | 银 | 3400 | 12 年 9 月 10 日6 | 银 | 790 | 22/09/127 | 黄金 | 1000 | 9/08/128 | 大理石| 9000 | 22/09/12预期结果:以下是不准确的示例结果日期 | 频道 | 每周收入| 月收入| 年收入| 总收入2/2/2017 | 黄金 | 200 | 5400 | 3244 | 90222日期 | 银 | 600 | 4300 | 983 | 10000我想对上面解释的金额(收入)求和,也许按频道和 created_at(日期)分组。我如何编写雄辩的查询并在使用 created_at 之间按日期过滤。它应该在控制器中完成。
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

如果您的频道有限(如 5-20),则使用以下代码:


<?php

$items = Revenue::groupBy('channel')->get(['channel']);

$re = [];

foreach ($items as $key => $value) {

    $re['daily'][$value] = Revenue::where('channel',$value)->whereDate('created_at',date('Y-m-d'))->sum('amount');

    $re['weekly'][$value] = Revenue::where('channel',$value)->whereBetween('date', [

        Carbon::parse('last monday')->startOfDay(),

        Carbon::parse('next friday')->endOfDay(),

    ])->sum('amount');

    $re['monthly'][$value] = Revenue::where('channel',$value)->whereMonth('created_at',date('m'))->sum('amount');

    $re['yearly'][$value] = Revenue::where('channel',$value)->whereYear('created_at',date('Y'))->sum('amount');

}


var_dump($re);

在这段代码中,我们首先分离通道,然后使用它们来计算所需的结果。顺便说一句,代码是要测试的。


查看完整回答
反对 回复 2021-09-18
  • 1 回答
  • 0 关注
  • 228 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信