Итоги Laravel или баланс с пагинацией - PullRequest
0 голосов
/ 06 сентября 2018

Я действительно новичок в Laravel и совершенно новичок в кодировании.Я удивлен, что промежуточные итоги или сальдо не получают большого внимания.

Проблема заключается в следующем:

  • У меня есть текущий баланс счета, записанный в базе данных.
  • У меня есть страница с именем account / $ id, где я получаю все транзакции счета с этим идентификатором.
  • Мой последний столбец - это баланс идентификатора счета после этой транзакции.Обратный итог, я думаю, это называетсяПример: сальдо транзакции 3 = сальдо транзакции 2 - сумма транзакции 2.
  • Пока здесь все не работает.
  • Однако, когда я вхожу в paginate;только первая страница дает мне правильный баланс.Во второй баланс возобновляется с начала.

Код, который работает:

Контроллер

$transactions=\App\Transaction::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=\App\Transaction::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>

Я пробовал также различные добавления в ссылки (), но этокажется, что я не знаю, как его использовать или не работает.

Действительно большое спасибо заранее всем, кто может мне помочь.

1 Ответ

0 голосов
/ 07 сентября 2018

проблема:
каждый раз, когда вы переходите по ссылкам на нумерацию страниц, вы фактически отправляете запрос на получение одного и того же URL, плюс? page = N (N: номер ссылки) Например, https://example.com/account/36?page=2.
и каждый раз, когда контроллер должен выполняться, и в начале он устанавливает

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

Решение:
У меня нет вашего полного кода, но ваш контроллер должен выглядеть примерно так:

    public function ControllerFunction(Request $request){

        $transactions=\App\Transaction::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;
        }
    }
...