Laravel/Lumen 分组求和问题 where groupBy sum


Laravel框架提供了多个快捷查询方法,Select、Order By、Group By、And Having,今天遇到了一个SQL查询分组求和的问题,使用多方法查询时,各种报错,踩了些坑,分享出来。

在Laravel中使用分组求和,如果直接使用Laravel各数据库操作方法,应该会得出来如下代码式:

DB::table('table_a')
    ->where('a','=',1)
    ->groupBy('b')
    ->select("sum(c) as d")
    ->get();

但是,这么做会报错,因为laravel中的select方法会把空格当成要获取的字段间隔,于是生成的SQL语句就会变成 

select 'sum(c)','as','d' ...

这肯定不会是我们想要的,那么如何解决这个问题呢?我想到了两种方法:

第一种方法:使用sql原生语句,绕过这个问题

DB::select("select sum(c) as 'd' from table_a where a=1 group by b")

第二种方法:使用DB::raw(),对sum(c) as 'd'使用raw()方法,部分原生

DB::table('table_a')
    ->where('a','=',1)
    ->groupBy('b')
    ->select(DB::raw("sum(c) as d"),)
    ->get();


本文发表于2017年12月26日 23:29
阅读 14897 讨论 0 喜欢 17

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1