繁体   English   中英

在雄辩的ORM中如何使用CASE WHEN?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM