[英]how to use GroupBy and Where Clause in Laravel Eloquent?
請嘗試使用 laravel 中的 GroupBy 和 Where 子句從數據庫中的連接表中檢索數據。 如果我添加groupBy
,我會收到錯誤。 它可以在沒有 GroupBy 的情況下工作,但我想在檢索后對數據進行排序。
這就是我所擁有的,有人應該幫助我
public function showResult($std_id)
{
$results = DB::table('students')
->select('*')
->join('results', 'students.std_id', 'results.student_results_id')
->where('student_results_id', $std_id)
->groupBy('results.academic_year')
->get();
$studentprofilePage = Student::find($std_id);
if (empty($studentprofilePage)) {
return redirect('/user');
}
return view('resultsdisplay', [
'results' => $results,
'studentresultsprofile' => $studentprofilePage,
]);
}
收到此錯誤
Syntax error or access violation: 1055 'smgt.students.std_id' isn't in GROUP BY (SQL: select * from `students` inner join `results` on `students`.`std_id` = `results`.`student_results_id` where `student_results_id` = 4662416 group by `results`.`academic_year`)
實際上,我從代碼中了解到,您需要按學年對結果進行分組,然后將其加入學生表。 所以我會建議
DB::table('students')
->select('*')
->join('results', function ($join) {
$join->on('students.std_id', '=', 'results.student_results_id')->groupBy('results.academic_year');
})
->where('student_results_id', $std_id)
->get();
像這樣的東西。
要基於mohammad.kaab
的答案,您應該能夠使用Student
model 來構建此查詢,這將使您的代碼更清晰。 我還建議使用 Laravel 的類型提示showResult(Student $student)
, Laravel 將在后台為您獲取Student
,如果未找到學生,則返回 404。
所以你應該能夠做類似下面的事情:
public function showResult(Student $student)
{
$results = $student->results()
->groupBy('results.academic_year');
->get();
return view('resultsdisplay', [
'results' => $results,
'studentresultsprofile' => $student,
]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.