我有一张桌子total_count
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_p
和total_a
计算。例如:
studid = 30
,total_p = 5
和total_a = 2
。因此,我想获取每个
studid
的每个月的总计,以及总计月份的total_p
和total_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
最佳答案
Eloquent的聚合函数sum()为所有与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个值:studid,sum_a和sum_p。
关于php - 如何在Laravel中使用sum(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32094612/