0
Eloquent ORMにCASE WHEN
を使用するには?Eloquent ORMでCASE WHENを使用するには?
ような
$query->selectRaw('CASE WHEN (created_at = '.$daterange.') THEN 'P' as attendance)
何かを追加する場合、それが動作する場合、私は思ったんだけど、私はCASE WHEN
を使用する方法がわからない、それは可能ですか?
// Create a loop for date range
$daterange = [];
for ($day = $search_from; $day <= $search_to; $day++) {
$daterange[]['date'] = $this->carbon->parse($day)->format('M d');
}
// Search Student
$students = User::has('userStudentAttendance')->with(['userStudentAttendance' => function($query) use ($details,$search_from, $search_to){
$query->where('status', $details);
$query->where(function($query) use ($search_from, $search_to){
$query->whereBetween(DB::raw('Date(created_at)'), [$search_from, $search_to]);
});
$query->groupby('user_id')->groupby(DB::raw('Date(created_at)'));
}])
->leftjoin('sys_user_student', 'sys_user_student.user_id', '=', 'sys_user.user_id')
->leftjoin('sys_mf_section', 'sys_mf_section.section_id', '=', 'sys_user_student.section_id')
->leftjoin('sys_mf_grade', 'sys_mf_grade.grade_id', '=', 'sys_mf_section.grade_id')
->where('user_type_id', '4')
->where('sys_mf_section.section_id', $request->getParam('section_id'))
->where('sys_mf_grade.grade_id', $request->getParam('grade_id'))
->orderBy('sys_user.last_name')
->get();
これは私が達成したいことをレポートの外観です:
+--------------------------------------------------+
|student ID|full Name|Oct 23|Oct 24|Oct 25 | Oct 26|
|1 |stud 1 | P | P | P | A |
|2 |stud 2 | P | A | P | P |
|3 |stud 3 | P | P | P | P |
|4 |stud 4 | P | P | P | A |
|5 |stud 5 | A | A | A | A |
+--------------------------------------------------+
おかげ@Derta、病気してみてくださいそれ – Tallgeese
'\t \t $生徒=ユーザー::( 'userStudentAttendance')を持っている - ([ 'userStudentAttendance' =>関数($クエリ)を使用して>($詳細、$ search_from、$ search_to、$ DATERANGE){ \t \t \t $ query->ここで( 'ステータス'、$詳細); \t \t \t $ query->(関数($クエリはここ)($ search_from、$ search_toを使用して、 $ daterange){ \t \t \t \t $ query-> whereBetween(DB :: raw( 'Date(created_at)')、[$ search_fro m、$ search_to]); \t \t \t}); \t \t \t $ query-> groupby( 'user_id') - > groupby(DB :: raw( 'Date(created_at)'))); \t \t \t $ query-> select(DB :: raw( '(CASE WHEN status = "entrance" THEN "TEST" ELSE "ERROR" END)をtapped_timeと呼びます)); \t \t}]) - > get(); \t ' まだ結果を得ることができません、なぜですか? – Tallgeese