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

Laravel Eloquent:按barcode汇总对象数组的quantity值

Laravel Eloquent 按 barcode 汇总 quantity 解决方案

一、直接从数据库查询时汇总(推荐)

如果数据存储在数据库中,直接通过 Eloquent 分组+聚合查询处理,性能更优:

假设对应模型为 Product(可替换为你的实际模型名):

use Illuminate\Support\Facades\DB;

$aggregated = Product::select(
    'barcode',
    'description',
    DB::raw('SUM(quantity) as qty'),
    DB::raw('MIN(id) as id') // 取每组最小的 id,匹配示例输出逻辑
)
->groupBy('barcode', 'description') // 按条码和描述分组,确保同条码同描述的条目合并
->get();

二、处理已获取的 Eloquent Collection

如果已经拿到了对象数组(Eloquent Collection),可以用集合方法在内存中处理:

// 假设 $items 是你的目标 Eloquent Collection
$aggregated = $items->groupBy(['barcode', 'description'])
    ->map(function ($group) {
        return [
            'id' => $group->min('id'),
            'barcode' => $group->first()->barcode,
            'description' => $group->first()->description,
            'qty' => $group->sum('quantity')
        ];
    })
    ->values() // 重置数组索引为连续数字
    ->toArray(); // 转为纯数组,无需数组则可省略此方法

注意事项

  • 示例中 quantity 为字符串类型,Laravel 的聚合函数和集合方法会自动转换类型完成求和计算
  • 示例期望输出中第二个条目的 description 存在笔误(应为 paper),上述代码会自动保留分组内正确的描述值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:14:57