2016-03-09 56 views
0

我在laravel中有兩個數組,包含當前年份和上一年每個月的第一天。在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)和收入欄。我試圖在上面的數組中獲得每個月的收入總和。

+0

哦對不起忘了提,我有表格日期欄是碳風格日期(前2016-01-01)和收入欄。我需要得到每個月的收入總和列,基本上我每個月從我創建的數組中獲得的收入有多少。 –

+0

是的,生病了,繼續前進,更新問題,表格行是每一天 –

+0

好,所以即時通訊生成陣列的日期列表(他們都是頭幾個月),過去一年和今年。因此,例如陣列第一次約會是2016-01-01,所以我需要在2016年1月份獲得總收入。 –

回答

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

+0

感謝,這將做的工作,我認爲這可能會更好地工作,而不是SQL查詢和groupby和所有的廢話 –