2015-08-19 41 views
0

使用SUM()我有一個表total_count如何laravel

id studid month year  acls_id total_p total_a 

1 30  08  2015  12  5  2  
2 35  08  2015  12  5  2  
3 52  08  2015  12  5  2  
4 53  08  2015  12  5  2 
5 54  08  2015  12  5  2 
6 55  08  2015  12  5  2 
7 30  09  2015  12  3  0 
8 35  09  2015  12  3  0 
9 52  09  2015  12  2  1 
10 53  09  2015  12  3  0 
11 54  09  2015  12  3  0 
12 55  09  2015  12  3  0 

我要計算每個學生total_ptotal_a

例如:studid = 30,total_p = 5total_a = 2

因此,我想每個月總共獲得studid,總數爲total_ptotal_a

我的控制器代碼是

$total_counts = DB::table('total_count') 
         ->whereBetween('smonth',08, 09)) 
         ->whereBetween('syear', 2015, 2015)) 
         ->sum('total_p); 
         ->sum('total_a); 

視圖blade.php

{{$total_counts->total_p}} 
{{$total_counts->total_a}} 

,但它不工作..

如何使用查詢生成器格式sum()

我想等的輸出:

studid  total_p total_a 

    30   8   2 

    35   8   2 

    52   7   3 

    53   8   2 

    54   8   2 

    55   8   2 

回答

1

雄辯的聚合函數總和()返回匹配criterai所有行單個標。如果你想獲得行列表,你需要建立一個查詢,按照他們的ID對學生進行分組並計算每個學生的總和。

這個查詢應該做的伎倆:

$total_counts = DB::table('total_count') 
    ->whereBetween('smonth',08, 09)) 
    ->whereBetween('syear', 2015, 2015)) 
    ->groupBy('studid') 
    ->get(['studid', DB::raw('SUM(total_a) AS sum_a'), DB::raw('SUM(total_p) AS sum_p')]); 

$共有TOTAL_COUNTS每一行都將包含3個值:studidsum_asum_p

+0

謝謝你先生。我的工作.... – cnbwd

+0

先生我有一個疑問....如何使用增量和減量laravel – cnbwd

+0

例如:studid 30 total_p = 5和total_a = 2,所以iam編輯我的出席成爲缺席。 所以使用此代碼DB要減量total_p由1和增量total_a由1 – cnbwd