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

原生SQL转Laravel Eloquent带sum求和函数不生效问题咨询

错误原因
  • Laravel 查询构造器的 sum() 是终止性执行方法,调用后会直接返回求和的数值结果,无法继续链式调用后续的 get() 方法,也不会将求和结果作为查询的字段返回
  • 你没有将sum求和逻辑作为查询字段加入select配置,和原生SQL的查询逻辑不匹配
正确转换写法
DB::table('carts')
    ->join('products', 'carts.productid', '=', 'products.id')
    ->select(
        DB::raw('SUM(carts.quantity) as couuntq'),
        'carts.productid',
        'products.name',
        'products.price',
        'products.gallary'
    )
    ->where('carts.userid', $userid)
    ->groupBy('carts.productid')
    ->orderBy('carts.productid')
    ->get();
补充说明
  • 原生SQL中重复查询products.name两次属于冗余,我已删除重复字段,如有特殊业务需要可以自行加回
  • 如果你使用Laravel 5.3及以上版本,运行时出现group by相关报错,是因为Laravel默认开启了严格模式SQL校验,需要把select中所有非聚合字段都加入groupBy配置,调整如下:
->groupBy('carts.productid', 'products.name', 'products.price', 'products.gallary')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:27:00