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
相关产品推荐
相关产品推荐

