[英]How to use CASE WHEN in Eloquent ORM?
在雄辩的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 |
+--------------------------------------------------+
我想您正在使用Laravel。 也许您可以使用Laravel提供的select原始查询。
->select('users.id AS user_id', 'users.name',
DB::raw('(CASE WHEN users.status = 0
THEN "active" WHEN users.status = 1
THEN "not active"
ELSE "pending" END) AS
status_user'))
->orderBy('shares.created_at', 'desc')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.