php - 如何在 Laravel 4 中使用 Blade 进行求和查询

标签 php laravel foreach laravel-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);

这就是我在 Blade 中 foreach 的方式

@foreach ($subjects as $subject)
                {
                <tr>
                <td>{{$subject->total_units}}</td>
                <td>{{$subject->total_tuition}}</td>
                </tr>        
                }
            @endforeach

但是它告诉我

Invalid argument supplied for foreach()

最佳答案

这不是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();

关于php - 如何在 Laravel 4 中使用 Blade 进行求和查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27343922/

相关文章:

php - 重新加载时保存复选框状态

javascript - 使用 JQuery 从我的游戏目录中随机获取 8 张图像

laravel - 如何在 Laravel Fortify 中进行身份验证后运行自定义代码?

database - Laravel 在查询之前更改模型表

laravel - 使用 laravel 向 whatsapp 发送消息和文件

javascript - 如何将 forEach 映射到 angularJS 中的 Accordion

java - 如何使用流来编写它? Java 8

php - 访问 URL 更改代码

php - 执行字符串时出现 cURL 错误

r - 在 R 中使用 foreach 进行并行提升