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

Laravel 8 中如何实现表格行数据求和?

解决Laravel表格数据求和问题

看起来你在表格总计行的实现上踩了两个小坑:一是总计行里又循环了$reports,导致生成多个重复列;二是用错了方法——countBy()是统计集合内元素出现次数的,并不是用来求和的。下面给你两种简单可行的解决方案:

方案一:在控制器中预先计算总和(推荐)

这种方式更符合MVC的设计思路,把数据计算逻辑放在控制器层,视图只负责展示内容:

修改控制器代码:

public function CreateRentCertificateReport(Request $request) { 
    // 先获取报表数据集
    $reports = Report::distric()->status(1)->get();
    // 直接使用集合的sum方法计算column_one的总和
    $totalColumnOne = $reports->sum('column_one');
    
    // 将数据集和总和一起传递到视图
    return view('adc.reports.start-create-report', [
        'reports' => $reports,
        'totalColumnOne' => $totalColumnOne
    ]); 
}

修改视图代码:

<tbody> 
    @foreach($reports as $data) 
    <tr> 
        <td>{{$data->upazila->upazila_name}}</td> 
        <td class="numeric_bangla">{{$data->column_one}}</td> 
    </tr> 
    @endforeach 
    <tr> 
        <td>Total</td> 
        <!-- 直接使用预先计算好的总和 -->
        <td class="numeric_bangla">{{$totalColumnOne}}</td> 
    </tr> 
</tbody>

方案二:直接在视图中计算总和

如果不想修改控制器代码,也可以直接在视图里利用Laravel集合的sum()方法完成求和:

<tbody> 
    @foreach($reports as $data) 
    <tr> 
        <td>{{$data->upazila->upazila_name}}</td> 
        <td class="numeric_bangla">{{$data->column_one}}</td> 
    </tr> 
    @endforeach 
    <tr> 
        <td>Total</td> 
        <!-- 直接对reports集合的column_one字段求和 -->
        <td class="numeric_bangla">{{$reports->sum('column_one')}}</td> 
    </tr> 
</tbody>

额外注意事项

  • 确保column_one字段是数值类型(int/float),如果是字符串格式的数字,可以通过闭包转换后求和:
    $reports->sum(function($item) {
        return (float)$item->column_one;
    });
    
  • 如果column_one存在null值,Laravel的sum()方法会自动忽略这些值,不会影响最终求和结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:07:36