You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求将指定MySQL查询语句转换为Laravel模型查询实现

请求将指定MySQL查询语句转换为Laravel模型查询实现

嘿,我来帮你把这条MySQL查询转换成Laravel Eloquent查询构建器的写法,完美匹配原SQL的逻辑,同时贴合Laravel的开发习惯~

首先先明确对应的模型假设(你可以根据自己实际的模型名称调整):

  • user_personal 表对应 UserPersonal 模型
  • clockin 表对应 Clockin 模型
  • schedule_week 表对应 ScheduleWeek 模型

下面是转换后的代码实现,每一步都严格对应原SQL的逻辑:

use App\Models\UserPersonal;
use Illuminate\Support\Facades\DB;

$attendanceRecords = UserPersonal::query()
    // 选择需要的字段,对应原SQL的SELECT部分
    ->select([
        'clockin.working_day as cdate',
        DB::raw('clockin.*'), // 原SQL里的`clockin.`推测是要选中该表所有字段,这里补全
        DB::raw('sch_week.*'), // 同理,原SQL的`sch_week.`补全为所有字段
        'user_personal.schedule_id',
        'user_personal.username',
        // 处理子查询:拼接同一员工同一天的时间记录
        DB::raw("(
            SELECT GROUP_CONCAT(time separator '==')
            FROM clockin
            WHERE employee_no = user_personal.employee_no
              AND working_day = clockin.working_day
            GROUP BY working_day
        ) as time")
    ])
    // 处理JOIN关联:先关联clockin,再嵌套关联schedule_week
    ->join('clockin', function ($join) {
        $join->join('schedule_week as sch_week', function ($innerJoin) {
            $innerJoin->on('user_personal.schedule_id', '=', 'sch_week.schedule_id')
                ->whereRaw('sch_week.week_day = DATE_FORMAT(clockin.working_day, "%a")');
        });
    })
    // 筛选当月的记录
    ->whereRaw('MONTH(clockin.working_day) = MONTH(CURRENT_DATE())')
    // 按员工编号和工作日分组
    ->groupBy('user_personal.employee_no', 'clockin.working_day')
    // 排序规则:工作日倒序,员工编号正序
    ->orderBy('clockin.working_day', 'desc')
    ->orderBy('user_personal.employee_no')
    // 获取结果集
    ->get();

一些关键点说明:

  • 原SQL里的clockin.和sch_week.应该是输入时的遗漏,我默认处理为选中对应表的所有字段,如果只需要特定字段,把DB::raw('clockin.*')换成具体字段名即可
  • 子查询用DB::raw()直接保留原生逻辑,因为GROUP_CONCAT是MySQL专属函数,用原生表达式最直接高效
  • 关联部分用嵌套的join来实现原SQL里的连续JOIN逻辑,确保关联条件完全匹配
  • 月份筛选用whereRaw()来和原SQL的month()函数逻辑保持一致

备注:内容来源于stack exchange,提问作者Sonali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:37:45