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

Laravel如何实现带多条件的sum聚合查询 计算销售表总收益

方案1:将聚合逻辑直接写入SUM表达式通过sum()方法传入

这是最简洁的写法,直接给sum()方法传入DB::raw包裹的条件计算逻辑,返回结果直接是数值类型:

use Illuminate\Support\Facades\DB;

// 直接返回计算完成的总收益数值
$total = Sale::sum(DB::raw(
    'case when status = 1 then price * quantity 
          when status = 2 then price * quantity * -1 
          else 0 end'
));

方案2:通过别名查询后取字段值

如果你习惯写完整的SELECT语句,可以用value()方法直接获取计算后的字段值,避免返回集合或模型实例:

use Illuminate\Support\Facades\DB;

$total = Sale::select(DB::raw(
    'SUM(case when status = 1 then price * quantity 
              when status = 2 then price * quantity * -1 
              else 0 end) as total'
))->value('total');

原问题原因说明

你之前没有拿到数值结果,是因为单独调用select(DB::raw())后返回的是查询构造器实例,没有触发实际查询并取出计算结果。以上两种写法都会直接执行SQL并返回最终的数值类型的总收益结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:06:03