如何分组特定用户的出勤日志 - Eloquent

时间:2017-10-23 04:39:11

标签: php eloquent

我正在创建一个考勤报告模块。

我有两个表,一个是User表,另一个是attendance_log

这是每个表的列

Users

--------------------------------- |user_id | first_name | lastname| | 1 | jesse | leech | | 2 | howard | jones |

attendance_log

--------------------------------- |log_id | user_id | status | created_at | updated_at | | 1 | 1 | entrance | 2017-08-09 13:08:57 | 2017-08-09 13:08:57 | | 2 | 1 | entrance | 2017-08-09 13:09:00 | 2017-08-09 13:09:00 | | 3 | 1 | entrance | 2017-08-09 13:09:03 | 2017-08-09 13:09:03 | | 4 | 2 | entrance | 2017-08-09 13:10:28 | 2017-08-09 13:10:28 | | 5 | 2 | entrance | 2017-08-09 13:10:30 | 2017-08-09 13:10:30 | | 6 | 2 | entrance | 2017-08-09 13:10:31 | 2017-08-09 13:10:31 | | 7 | 1 | entrance | 2017-08-10 13:08:57 | 2017-08-10 13:08:57 | | 8 | 1 | entrance | 2017-08-10 13:09:00 | 2017-08-10 13:09:00 | | 9 | 1 | entrance | 2017-08-10 13:09:03 | 2017-08-10 13:09:03 | | 10 | 2 | entrance | 2017-08-10 13:10:28 | 2017-08-10 13:10:28 | | 11 | 2 | entrance | 2017-08-10 13:10:30 | 2017-08-10 13:10:30 | | 12 | 2 | entrance | 2017-08-10 13:10:31 | 2017-08-10 13:10:31 |

正如您在attendance_log表中看到的那样,我有多个created_at值,因为我使用rfid点击为插入数据插入数据。

这是我的问题,当我按created_at对其进行分组时,结果将是:

----------------------------------------------- | first name | last name | date & time | | jesse | leech | 2017-08-09 13:08:57 | | jesse | leech | 2017-08-10 13:08:57 |

而不是:

----------------------------------------------- | first name | last name | date & time | | jesse | leech | 2017-08-09 13:08:57 | | jesse | leech | 2017-08-10 13:08:57 | | howard | jones | 2017-08-09 13:10:28 | | howard | jones | 2017-08-10 13:10:28 |

我怎样才能实现这一目标?

这是我的代码

    $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(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'))        
    ->get();
希望有人能帮助我,并抱歉我的英语不好。谢谢你们!

0 个答案:

没有答案