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

Laravel中如何在查询中计算两个withSum统计值的差值

Laravel 查询中直接计算关联统计字段差值的方法

你可以通过在查询链中添加自定义计算字段的方式,直接得到purchases_sum_quantity减去solds_sum_quantity的差值。需要注意的是,如果某个关联没有对应数据,withSum返回的统计值会是null,所以要用COALESCE函数将null替换为0,避免计算结果出错。

方法一:使用addSelect结合DB::raw

use Illuminate\Support\Facades\DB;

$titles = Title::withSum('solds', 'quantity')
    ->withSum('purchases', 'quantity')
    ->addSelect([
        'quantity_diff' => DB::raw('COALESCE(purchases_sum_quantity, 0) - COALESCE(solds_sum_quantity, 0)')
    ])
    ->paginate(20);

方法二:使用selectRaw(Laravel 9+ 更简洁)

$titles = Title::withSum('solds', 'quantity')
    ->withSum('purchases', 'quantity')
    ->selectRaw('*, COALESCE(purchases_sum_quantity, 0) - COALESCE(solds_sum_quantity, 0) as quantity_diff')
    ->paginate(20);

完成查询后,你可以直接通过模型实例访问这个差值字段:

foreach ($titles as $title) {
    echo $title->quantity_diff; // 输出采购总量减去销售总量的差值
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:12:02