LaravelLumen 分组求和问题 where groupBy sum

在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();
posted @ 2023-02-10 17:10  快乐的提千万  阅读(78)  评论(0编辑  收藏  举报