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

MySQL转Eloquent查询报错:未知列'sum(minute(time_stamp))'求助

解决Laravel中MySQL查询转Eloquent后的列不存在错误

你的问题出在Laravel查询构造器的自动转义机制上:直接把包含聚合函数(SUM、MINUTE)和计算逻辑的字段写在select的字符串参数里,Laravel会错误地将这些SQL片段识别为列名,导致Unknown column报错。

解决方法是用DB::raw()包裹所有非普通列的SQL片段,明确告诉Laravel直接执行这段原生SQL,不要进行转义处理。

修正后的代码:

$tickets = DB::table('tickets')
    ->select(
        'ticket',
        DB::raw('SUM(MINUTE(time_stamp)) AS minutes'),
        DB::raw('SUM(MINUTE(time_stamp))/60 AS hours'),
        DB::raw('SUM(MINUTE(time_stamp))/(60*24) AS days'),
        DB::raw('SUM(MINUTE(time_stamp))/(60*24*7) AS week')
    )
    ->groupBy('ticket')
    ->get();

这段代码生成的SQL和你在phpMyAdmin中运行的原生查询完全一致,不会再出现列不存在的错误。

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:37:35