拉拉维尔运行总计或平衡与分页



我对拉拉维尔真的很陌生,对溺爱也很陌生。我很惊讶运行总计或余额没有得到很多关注。

问题是:

  • 我在数据库中记录了一个帐户的当前余额。
  • 我有一个名为 account/$id 的页面,我在其中获取使用该 ID 的帐户的所有交易。
  • 我的最后一列是该交易后账户 ID 的余额。反向运行总计,我认为它被称为。示例:交易余额 3 = 交易 2 余额 - 交易 2 的余额。
  • 直到这里一切正常。
  • 但是,当我输入分页时;只有第一页给了我正确的平衡。在第二秒,余额从头开始。

有效的代码:

控制器

$transactions=AppTransaction::orderByDesc('transaction_date')->orderByDesc('created_at')->where('account_id',$id)->get();
$previousTransaction=0;
$previousBalance=$account->account_current_balance;
foreach ($transactions as $key => $transaction) {
$balances[]=$previousBalance-$previousTransaction;
$previousBalance=array_values($balances)[++$key-1];
$previousTransaction = $transaction->transaction_ammount;
}

视图

@foreach($transactions as $key => $transaction)
<td class="align">{{array_values($balances)[++$key-1]}}</td>
@endforeach

没有给我正确平衡的代码:

控制器

$transactions=AppTransaction::orderByDesc('transaction_date')->orderByDesc('created_at')->where('account_id',$id)->paginate(20);
$previousTransaction=0;
$previousBalance=$account->account_current_balance;
foreach ($transactions as $key => $transaction) {
$balances[]=$previousBalance-$previousTransaction;
$previousBalance=array_values($balances)[++$key-1];
$previousTransaction = $transaction->transaction_ammount;
}

视图

@foreach($transactions as $key => $transaction)
<td class="align">{{array_values($balances)[++$key-1]}}</td>
@endforeach
<div class="content-header noevents">
{{ $transactions->links() }}
</div>

我也尝试了 links(( 中的不同附加,但似乎我不知道如何使用它或不起作用。

非常感谢任何可以帮助我的人。

问题:
每次浏览分页链接时,您实际上都会向同一URL发送一个get请求,加上?page=N(N:链接编号(,例如https://example.com/account/36?page=2.
并且每次控制器应该执行,并且在开始时,它设置

$previousTransaction=0;
$previousBalance=$account->account_current_balance;

解决方案:我没有你完整的代码,但你的控制器应该是这样的:

public function ControllerFunction(Request $request){
$transactions=AppTransaction::orderByDesc('transaction_date')->orderByDesc('created_at')->where('account_id',$id)->paginate(20);
if(!$request->has(['pre_trans', 'pre_balance']){
$previousTransaction=0;
$previousBalance=$account->account_current_balance;
}else{
$previousTransaction = $request['pre_trans'];
$previousBalance = $request['pre_balance'];
}
foreach($transactions as $key => $transaction) {
$balances[]=$previousBalance-$previousTransaction;
$previousBalance=array_values($balances)[++$key-1];
$previousTransaction = $transaction->transaction_ammount;
}
if(!$request->has(['pre_trans', 'pre_balance']){
$request->request->add(['pre_trans' => $previousTransaction]);
$request->request->add(['pre_balance' => $previousBalance]);
}else{
$request['pre_trans'] = $previousTransaction;
$request['pre_balance'] = $previousBalance;
}
}

最新更新