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

在Laravel中如何访问数组对象并对分组后的amount_granted字段求和

Laravel 按月度分组统计累计放贷总额解决方案

错误原因说明

你出现undefined offset 1报错的核心原因是:Laravel Eloquent查询返回的是Collection实例而非普通PHP数组,直接使用数字下标访问分组后的集合时,若索引不连续就会触发该错误。


方案1(推荐使用):SQL层面直接完成分组统计

直接在数据库查询阶段完成分组和求和计算,性能远高于取出全量数据后在PHP层面处理,代码如下:

$loanmcount2 = Loan::selectRaw('MONTH(date_release) as month, SUM(amount_granted) as total')
    ->where('invalid', false)
    ->where('transaction_year', $transyear)
    ->groupBy('month')
    ->get()
    // 直接将结果转为「月份为键、总额为值」的数组
    ->pluck('total', 'month')
    ->toArray();

return view('src/modules-crud', compact('loanmcount2'));

该方案输出的数组结构完全匹配你期望的格式,转为JSON后就是你需要的{"9":"10000","5":"30000"...}效果。


方案2:在现有Collection基础上统计

如果你需要保留原分组的明细数据,同时需要统计月度总额,直接使用Collection自带的sum方法即可,不需要手动访问下标:

$loanAmountbyMonth = Loan::select('date_release','amount_granted')
    ->where('invalid',false)
    ->where('transaction_year', $transyear)
    ->get()
    ->groupBy(function($date) {
        return Carbon::parse($date->date_release)->format('m');
    });     

$loanmcount2 = [];
foreach ($loanAmountbyMonth as $key => $value) {
    // 直接对分组内的amount_granted字段求和
    $loanmcount2[(int)$key] = (string)$value->sum('amount_granted');
}

return view('src/modules-crud',compact('loanmcount2'));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:18:00