Reputation: 445
I want to to show the recently created amount at the top but also I want to show the balance column, the balance column will add or subtract the amount from the record
Controller
$ledgerTransactions = LedgerRecord::where('ledger_id', $id)->orderBy('created_at', 'asc')->get();
Blade
@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
The problem with this is it starts adding from top, which I don't want. I want it starts adding from bottom
Expected results are marked in red color in below image
Upvotes: 0
Views: 150
Reputation: 5715
It's probably something as easy as this:
@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
Upvotes: 1