【问题标题】:get monthly sum in laravel在laravel中获取每月总和
【发布时间】:2016-03-09 02:32:40
【问题描述】:

我在 laravel 中有两个数组,包含当年和上一年每个月的第一天。

$current_month = new \Carbon\Carbon('first day of this month');
    $prevyear_month = new \Carbon\Carbon('first day of this month last year');

    $current_year = array();
    $prev_year = array();

    array_push($prev_year, $prevyear_month->toDateString());
    array_push($current_year, $current_month->toDateString());

    for($i = 1; $i<12; $i++)
    {
        $temp = $current_month->addMonth();
        $temp_prev = $prevyear_month->addMonth();

        array_push($current_year, $temp->toDateString());
        array_push($prev_year, $temp_prev->toDateString());
    }

这就是结果

Array ( [0] => 2016-03-01 [1] => 2016-04-01 [2] => 2016-05-01 [3] => 2016-06-01 [4] => 2016-07-01 [5] => 2016-08-01 [6] => 2016-09-01 [7] => 2016-10-01 [8] => 2016-11-01 [9] => 2016-12-01 [10] => 2017-01-01 [11] => 2017-02-01 ) 
Array ( [0] => 2015-03-01 [1] => 2015-04-01 [2] => 2015-05-01 [3] => 2015-06-01 [4] => 2015-07-01 [5] => 2015-08-01 [6] => 2015-09-01 [7] => 2015-10-01 [8] => 2015-11-01 [9] => 2015-12-01 [10] => 2016-01-01 [11] => 2016-02-01 )

我正在尝试获取所有这些月份的总和,但不知道该怎么做。如果这是要走的路,我可以进行原始查询。

表格每天都有行。带有日期栏(碳风格,例如 2016-01-01)和收入栏。我试图在上面的数组中获得每个月的收入总和。

【问题讨论】:

  • 哦抱歉忘了提,我有表格,其中日期列是碳样式日期(例如 2016-01-01)和收入列。我需要获取每个月的总收入列,基本上是我每个月从我生成的数组中获得的收入。
  • 是的,我继续更新问题,表格行每天都在
  • 好的,所以我为过去一年和今年生成带有日期列表的数组(它们都是月份的第一个月)。因此,例如数组中的第一个日期是 2016 年 1 月 1 日,所以我需要获得 2016 年 1 月当月的总收入。
  • 您是否在查找过去两年中每个月的总收入?举例说明您希望实现的预期输出
  • 好的,所以我的数据库表有过去 3 年到明年的每一单的收入。所以我需要做的是在网页上显示今年和上一年每个月的收入,这样我们就可以看到与去年相比我们的表现如何。因此,如果您查看我原始问题中的两个数组,它有 12 个日期,我需要获取每个日期并获得该月的总数。例如数组中的第一个日期是 2016-03-01 所以我需要总结 3 月份的收入,即从 2016 年 3 月 1 日开始到 3 月底得到名为收入的列的总和

标签: php mysql laravel-5.2


【解决方案1】:

您必须稍微清理一下,但这里是您如何完成此任务的一个良好开端。

以下是我刚刚编写的示例函数,您可以调整并添加到您的模型中:

public function getMonthlySum(Carbon $date)
{
    $year = $date->year;
    $month = $date->month;

    if ($month < 10) {
        $month = '0' . $month;
    }

    $search = $year . '-' . $month;

    $revenues = parent::where('date', 'like', $search .'%')->get();

    $sum = 0;
    foreach ($revenues as $revenue) {
        $sum += $revenue->revenue;
    }

    return $sum;
}

这将计算表中与作为参数传递的 $date 具有相同年份和月份的任何条目的收入总和。

您应该能够对其进行调整以使用您的代码,并针对您要计算的任何其他总和进行微调,例如getYearlySum

【讨论】:

  • 谢谢,这样就可以了,我认为这可能比 sql 查询和 groupby 以及所有这些废话更好用
猜你喜欢
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 2019-05-27
相关资源
最近更新 更多