2015-06-12 27 views
0

總值我有我的數據庫中的表,如下圖所示:Laravel GROUP BY和點心等列

id | date  | amount 
======================== 
1 | 2015-01-26 | 1000 
2 | 2015-02-26 | 100 
3 | 2014-06-26 | 10 

我想組逐年記錄,然後找出各組的量的總和。

我可以使用以下查詢找到組:

Fee::orderBy('date', 'DESC') 
    ->get() 
    ->groupBy(function($date) { 
    return Carbon::parse($date->date)->format('Y'); // grouping by years 
}) 

但我不能夠獲得各組的量的總和。

+1

你應該調用' - >獲得()'/' - > sum('amount')'在方法鏈接結束時。試着移動它,讓我們知道你是否得到你需要的東西。另外,你目前正在得到一些結果或錯誤?如果您收到錯誤,請分享此錯誤。 – haakym

+0

@haakym它按年份對結果集進行分組。 – madnan

+0

我意識到這一點。我問你是否會在您的原始代碼中創建一個錯誤或是否返回一組數據? – haakym

回答

2

害怕我現在無法用口才說出來,但這應該適用於查詢生成器。它的工作沒有問題啊:

DB::table('fees') 
    ->select(DB::raw('YEAR(date) as year'), DB::raw('sum(amount) as total')) 
    ->groupBy(DB::raw('YEAR(date)')) 
    ->get(); 

使用你把這個問題同日:

id  date      amount 
1  2015-01-26     1000 
2  2015-02-26     100 
3  2014-06-26     10 

而且它提供了以下:

array:2 [▼ 
    0 => {#150 ▼ 
    +"year": 2014 
    +"total": "10" 
    } 
    1 => {#151 ▼ 
    +"year": 2015 
    +"total": "1100" 
    } 
] 
+0

我應用您的解決方案,但它給出了一個錯誤。 「strtolower()期望參數1是字符串,給定的對象」。 但是,如果給下面它返回零(0)。 Fee :: orderBy('date','DESC') - > get() - > groupBy(function($ date){ )返回Carbon :: parse($ date-> date) - > format('Y '); }) - > sum('amount'); – madnan

+0

查看關於查詢構建器解決方案的更新 – haakym

+1

@ haakym非常感謝您。它的作品。那就是我需要的。 – madnan