将MySQL查询转换为Laravel模型

gudnpqoy  于 2023-01-03  发布在  Mysql
关注(0)|答案(1)|浏览(135)

选择工作日打卡时间作为计算日期,clockin.sch_week.user. schedule_iduser. username,(从时钟中选择GROUP_CONCAT(时间分隔符'==')WHERE雇员编号=用户.雇员编号AND工作日=按工作日计算日期GROUP)作为时间FROM user_personal作为用户JOIN时钟内部连接schedule_week作为用户的sch_week。计划ID = sch_week.计划ID和week_day =日期格式(工作日,'% a')其中月(工作日)=月(当前日期())GROUP按用户.雇员编号,打卡点.工作日ORDER按打卡点.工作日说明,用户.雇员编号;

fae0ux8s

fae0ux8s1#

尝试类似下面的方法。

$results = Clockin::select('clockin.working_day as cdate', 'clockin.*', 'sch_week.*', 'user.schedule_id', 'user.username', 
                DB::raw("(SELECT GROUP_CONCAT(time separator '==') from clockin WHERE employee_no=user.employee_no AND working_day=cdate GROUP by working_day ) as time"))
            ->join('user_personal as user', 'user.employee_no', '=', 'clockin.employee_no')
            ->join('schedule_week as sch_week', function($join) {
                $join->on('user.schedule_id', '=', 'sch_week.schedule_id')
                     ->on(DB::raw("week_day = date_format(working_day,'%a')"));
            })
            ->whereMonth('working_day', Carbon::now()->month)
            ->groupBy('user.employee_no', 'clockin.working_day')
            ->orderBy('clockin.working_day', 'desc')
            ->orderBy('user.employee_no')
            ->get();

相关问题