在laravel获得每月总和

时间:2016-03-09 02:32:40

标签: php mysql laravel-5.2

我在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)和收入列。我试图在上面的数组中获得每月收入的总和。

1 个答案:

答案 0 :(得分:0)

你必须稍微清理一下,但这是一个很好的开始,你可以做到这一点。

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

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