如何使用laravel 4中的刀片预测求和查询

时间:2014-12-07 14:57:53

标签: php laravel foreach blade

这是我的总和查询,它实际上总结了特定学生的单位数和主题价格。

$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()提供的参数无效

1 个答案:

答案 0 :(得分:2)

这不是聚合方法在Query\Builder中的工作方式。检查一下:

DB::table('a_table')
  ->sum('a_field'); // returns string, eg. '555'
  // or
  ->count('a_field'); // returns int, eg. 333

所有聚合方法都是如此。

为了实现您的目标,您需要selectRawDB::raw),显然需要groupBy条款:

DB::table(..)
   ->selectRaw('sum(a_field) as sum, sum(another_field) as another_sum')
   ->groupBy('yet_another_field')
   ->get();