Freeman Joshua
Freeman Joshua

Reputation: 1

How to calculate and display sum total balance into main account from three different balance section (sign-up bonus, deposit, referral ) in LARAVEL?

I want to display the sum total of all credit activities in a user account as his main account balance. I have three different wallet, bonus, referral and deposit and will like to sum up all of them together. This is already being recorded individually in the transaction history but I want the total sum to appear in the user dashboard.

id deposit bonus referral balance
10 200 15 5
13 320 21 null

The balance of user (10) is the sum total of deposit + bonus + referral, which is suppose to be 220 while user 13 balance is 341. How can this be achieve to display for each user?

Here is my model

`public function transactions()
{
    return $this->hasMany(Transaction::class)->orderBy('id','desc');
}`

This is usercontroller

`public function transactions()
{
    $pageTitle = 'Transactions';
    $remarks   = Transaction::distinct('remark')->orderBy('remark')->get('remark');

    $transactions = Transaction::where('user_id', auth()->id())->searchable(['trx'])->filter(['trx_type', 'remark', 'wallet_type'])->orderBy('id', 'desc')->paginate(getPaginate());
    return view($this->activeTemplate . 'user.transactions', compact('pageTitle', 'transactions', 'remarks'));
}`

Blade

 <li>
    <span class="caption">@lang('Main Balance')</span>
    <span class="value">{{ showAmount($transaction->post_balance) }}</span>
</li>

Upvotes: -1

Views: 356

Answers (2)

Debuqer
Debuqer

Reputation: 395

So far i know about the problem you may use laravel built-in sum method to perform sum of deposit, bonus and referral for each row

Not tested but probably true

public function transactions()
{
    $pageTitle = 'Transactions';
    $remarks   = Transaction::distinct('remark')->orderBy('remark')->get('remark');

    $userTransactions = Transaction::where('user_id', auth()->id())->searchable(['trx'])->filter(['trx_type', 'remark', 'wallet_type'])->orderBy('id', 'desc');
    $transactions = $userTransactions->paginate(getPaginate());

    $totalBalance = $userTransactions->get()->sum(function (array $transaction) {
         return (int) transaction->deposit + (int) transaction->bonus + (int) transaction->referral;
    });

    
return view($this->activeTemplate . 'user.transactions', compact('pageTitle', 'transactions', 'remarks', 'totalBalance'));
}
 <li>
    <span class="caption">@lang('Main Balance')</span>
    <span class="value">{{ showAmount($totalBalance) }}</span>
</li>

Upvotes: 0

CHAUHAN DHARMESH
CHAUHAN DHARMESH

Reputation: 72

use this code to display sum of specific column

<span class="value">{{ showAmount($transaction->sum('post_balance')) }}</span>

Upvotes: 0

Related Questions