2017-10-26 18 views
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  | 
+--------------------------------------------------+ 

答えて

0

私はあなたがLaravelを使用していると思います。たぶん、Laravelによって提供された選択された生のクエリを使用することができます。

->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') 
+0

おかげ@Derta、病気してみてくださいそれ – Tallgeese

+0

'\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

関連する問題