我是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);
}
第一个查询应该输出每个主题的价格,第二个查询是所有主题的总和以及特定学生中单位数的总和。
答案 0 :(得分:1)
当然,您可以在一个函数中运行多个查询。您的代码存在的问题是您将查询结果存储在同一个变量$results
中。这意味着使用第二个查询覆盖第一个查询的结果。
尝试使用两个不同的变量:
$grades = DB::table('grades')
// ... etc ...
$subjects = DB::table('subjects')
// ... etc ...
return View::make('users.assessment')->with(array('grades' => $grades, 'subjects' => $subjects));