LaravelLumen分组求和问题wheregroupBysum
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();groupby分组
但是,这么做会报错,因为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();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论