Laravel Blade中如何合并两个数据表的小计进行求和?
合并两个数据表的总计计算方案
你可以通过两种方式实现Emphaya和Treasury两个表总计的合并计算,推荐优先使用后端计算的方式,减少重复数据库查询:
方案一:在控制器中预先计算总和(推荐)
修改控制器代码,直接计算两个表的单独总计以及合并后的总合计,再传递到视图,避免视图中重复触发数据库查询:
// 修改后的 Controller public function index() { $emphayas = DB::select('select * from emphayas'); $treasuries = DB::select('select * from treasuries'); // 计算单表总计 $emphayaTotal = \App\Models\Emphaya::sum('available_for_use_month'); $treasuryTotal = \App\Models\Treasury::sum('available_for_use_month'); // 计算合并总计 $combinedTotal = $emphayaTotal + $treasuryTotal; return view('database', [ 'emphayas' => $emphayas, 'treasuries' => $treasuries, 'emphayaTotal' => $emphayaTotal, 'treasuryTotal' => $treasuryTotal, 'combinedTotal' => $combinedTotal ]); }
在Blade视图中,直接使用传递过来的变量展示数据与总计,并新增合并总计模块:
<!-- 修改后的 Blade 视图 --> <table class=" "> <tr> <th class="py-3 bg-cyan-400">Total</th> <td class="py-3 bg-cyan-400">available_for_use_month</td> </tr> @foreach ($emphayas as $emphaya) <tr> <td></td> <td>{{ $emphaya->available_for_use_month}}</td> </tr> @endforeach <tr> <td>Total</td> <td>{{ $emphayaTotal }}</td> </tr> </table> <table class=" "> <tr> <th class="py-3 bg-cyan-400">Total</th> <td class="py-3 bg-cyan-400">available_for_use_month</td> </tr> @foreach ($treasuries as $treasury) <tr> <td></td> <td>{{ $treasury->available_for_use_month}}</td> </tr> @endforeach <tr> <td>Total</td> <td>{{ $treasuryTotal }}</td> </tr> </table> <!-- 新增合并总计展示 --> <div class="mt-4"> <h3>合并总计</h3> <p>available_for_use_month 总合计:{{ $combinedTotal }}</p> </div>
方案二:直接在Blade视图中计算合并总计
如果不想修改控制器,也可以直接在视图中合并两个表的总计,但这种方式会额外触发两次数据库查询,性能略差:
<!-- 在 Blade 视图末尾添加合并总计 --> <div class="mt-4"> <h3>合并总计</h3> <p>available_for_use_month 总合计:{{ \App\Models\Emphaya::sum('available_for_use_month') + \App\Models\Treasury::sum('available_for_use_month') }}</p> </div>
内容的提问来源于stack exchange,提问作者optimus899
相关产品推荐
相关产品推荐

