php - 当我想以 desc 顺序显示记录时如何计算余额?
问题描述
我想在顶部显示最近创建的金额,但我也想显示余额列,余额列将从记录中添加或减去金额
控制器
$ledgerTransactions = LedgerRecord::where('ledger_id', $id)->orderBy('created_at', 'asc')->get();
刀
@php
$balance = 0;
$ledgerTransactions = $ledgerTransactions->map(function($transaction) use(&$balance) {
$transaction->total = $transaction->sum('amount');
if ($transaction->type == "Payment") {
$transaction->total *= -1;
}
$transaction->balance = ($balance += $transaction->total);
return $transaction;
})->reverse();
@endphp
@foreach($ledgerTransactions as $transaction)
<tr>
<td>
<p class="mb-0">{{ $transaction->created_at->format('M d, Y') }}</p>
</td>
<td class="font-weight-bold">{{ $transaction->type }}</td>
<td>{{ $transaction->description ?? '' }}</td>
<td>
${{ $transaction->amount }}
</td>
<td>
${{ $transaction->balance }}
</td>
</tr>
@endforeach
问题是它从顶部开始添加,这是我不想要的。我希望它从底部开始添加
预期结果在下图中以红色标记
解决方案
这可能就像这样简单:
@php
$balance = 0;
$ledgerTransactions = $ledgerTransactions->map(function($transaction) use(&$balance) {
$transaction->total = $transaction->amount;
if ($transaction->type == "Payment") {
$transaction->total *= -1;
}
$transaction->balance = ($balance += $transaction->total);
return $transaction;
})->reverse();
@endphp
@foreach($ledgerTransactions as $transaction)
<tr>
<td>
<p class="mb-0">{{ $transaction->created_at->format('M d, Y') }}</p>
</td>
<td class="font-weight-bold">{{ $transaction->type }}</td>
<td>{{ $transaction->description ?? '' }}</td>
<td>
${{ $transaction->amount }}
</td>
<td>
${{ $transaction->balance }}
</td>
</tr>
@endforeach
推荐阅读
- python-3.x - 为什么这个二叉树前序遍历没有返回
- opengl - OpenGL:在两个 mipmap 链之间共享顶级 mip
- javascript - 有没有办法将数组更改为字符串,以逗号分隔值,并通过新行连接每个值?
- python - regex – 匹配与给定单词相同的后缀
- r - 如何在 R 中将文本添加到 QR 图?
- python - skopt 的 gp_minimize() 函数引发 ValueError: array must not contain infs or NaNs
- php - 如何检查 Python 脚本是否在 PHP 中运行?
- firebase - Firebase 功能:无法设置 # 的属性配置