我需要帮助在laravel中的一个函数中融合两个查询

时间:2014-12-07 09:43:45

标签: php postgresql laravel eloquent

我是laravel的新手,我已经没有选择了。如何在一个函数中实际查询两个表?它没有给我任何错误,但它也不会反映用户界面中的所有数据。这是一个函数中的两个查询。

public function displayAssessment()
    {
        $results = DB::table('grades')
            ->join('subjectblocking', 'grades.blockcode', '=', 'subjectblocking.blockcode')
            ->join('subjects', 'subjectblocking.subjectcode', '=', 'subjects.subjectcode')
            ->select('grades.studentid','subjectblocking.subjectcode','subjects.price')

            ->orWhere(function($query)
            {
                $query->where('grades.studentid', '=', '2013-F0218')
                        ->where('sem', '=', '1')
                        ->where('sy', '=', '2013-2014');
            })
            ->get();

            $results = 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('results', $results);
}   

第一个查询应该输出每个主题的价格,第二个查询是所有主题的总和以及特定学生中单位数的总和。

1 个答案:

答案 0 :(得分:1)

当然,您可以在一个函数中运行多个查询。您的代码存在的问题是您将查询结果存储在同一个变量$results中。这意味着使用第二个查询覆盖第一个查询的结果。

尝试使用两个不同的变量:

$grades = DB::table('grades')
    // ... etc ...

$subjects = DB::table('subjects')
    // ... etc ...

return View::make('users.assessment')->with(array('grades' => $grades, 'subjects' => $subjects));