这是我的总和查询,它实际上总结了特定学生的单位数和主题价格。
$subjects = DB::table('subjects')
->join('subjectblocking', 'subjects.subjectcode', '=', 'subjectblocking.subjectcode')
->join('grades', 'subjectblocking.blockcode', '=', 'grades.blockcode')
->select('subjects.numofunit as total_units','subjects.price as total_tuition')
->orWhere(function($query)
{
$query->where('grades.studentid', '=', '2013-F0218')
->where('sem', '=', '1')
->where('sy', '=', '2013-2014');
})
->sum('subjects.numofunit','subjects.price');
return View::make('users.assessment')->with('subjects', $subjects);
这就是我在刀片中预测它的方式
@foreach ($subjects as $subject)
{
<tr>
<td>{{$subject->total_units}}</td>
<td>{{$subject->total_tuition}}</td>
</tr>
}
@endforeach
然而它告诉我
为foreach()提供的参数无效
答案 0 :(得分:2)
这不是聚合方法在Query\Builder
中的工作方式。检查一下:
DB::table('a_table')
->sum('a_field'); // returns string, eg. '555'
// or
->count('a_field'); // returns int, eg. 333
所有聚合方法都是如此。
为了实现您的目标,您需要selectRaw
(DB::raw
),显然需要groupBy
条款:
DB::table(..)
->selectRaw('sum(a_field) as sum, sum(another_field) as another_sum')
->groupBy('yet_another_field')
->get();