首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算Laravel 8中的银行余额和银行总余额?

如何计算Laravel 8中的银行余额和银行总余额?
EN

Stack Overflow用户
提问于 2021-04-10 06:12:22
回答 3查看 808关注 0票数 1

我有银行表和交易表,它们有一对多的关系。我想计算一下每家银行的余额以及银行的总余额。

银行模式:

代码语言:javascript
复制
class Bank extends Model
{
    use HasFactory;

    protected $fillable = [
        'name',
        'code',
        'accountNumber',
        'swiftCode',
        'currency',
        'country',
        'city',
        'street',
        'zipcode',
    ];

    public function transactions()
    {
        return $this->hasMany(Transaction::class);
    }
}

交易模式:

代码语言:javascript
复制
class Transaction extends Model
{
    use HasFactory;

    protected $fillable = [
        'amount',
        'currency',
        'exchangeRate',
        'reference',
        'type',
        'adjustment',
        'partner_id',
        'bank_id',
    ];
    public function bank()
    {
        return $this->belongsTo(Bank::class);
    }
}

我为balance编写了下面的代码,这是不正确的,因为我不能使用这个集合访问事务列。

代码语言:javascript
复制
 <td>{{$bank->transactions->where('type', 'credit')->sum('amount') - $bank->transactions->where('type', 'debit')->sum('amount')}}</td>

有许多货币需要使用exchangRate进行标准化。我需要用exchangeRate和它的所有结果求和。所以它给了银行余额。

我应该从索引函数传递它。它应该和银行托收一起归还。BankController函数索引:

代码语言:javascript
复制
 public function index()
    {
        $banks = Bank::all();
        return view('inc.banks', compact('banks'));
    }

在此基础上,如何计算每个银行余额和银行总余额?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-12 04:25:35

我已经在银行和交易模型中解决了这个问题。我定义了一个自定义属性,然后将它附加到模型中。

交易模式:

代码语言:javascript
复制
 protected $appends = [
        'final_amount'
    ];
 public function getFinalAmountAttribute() {
        return $this->amount * $this->exchangeRate;
    }

银行模式:

代码语言:javascript
复制
 public function getCreditSumAttribute(){
        $sum = 0;
        if($this->transactions){
            $sum = $this->transactions->where('type', 'credit')->sum('final_amount');
        }
        return $sum;
    }

    public function getDebitSumAttribute(){
        $sum = 0;
        if($this->transactions){
            $sum = $this->transactions->where('type', 'debit')->sum('final_amount');
        }
        return $sum;
    }

    public function getSubCreditDebitAttribute(){
        return $this->credit_sum - $this->debit_sum;
    }

在银行的观点中,我把这个代码:

代码语言:javascript
复制
<td>{{'$ '}}{{$bank->sub_credit_debit}}</td>
票数 1
EN

Stack Overflow用户

发布于 2021-04-10 06:34:34

您必须从控制器获取它并将其传递给视图,创建一个函数来获取数据。

代码语言:javascript
复制
//Here You will get all transactions relevant to the bank as per your relationship

 $banks =Transaction::with('transactions.bank')->get();
    return view('inc.banks', compact('banks'));

使用输出数组,您可以手动计算所需的金额,或者可以手动查询它。

要清楚地了解输出,请使用SQL语法在数据库上手动查询。一旦您得到了正确的SQL语法,您可以使用laravel雄辩(这种方法将帮助您很大程度上了解您所做的)!祝你好运!

票数 1
EN

Stack Overflow用户

发布于 2021-04-10 20:18:48

你可以建立两个关系(贷方和借方),并与他们,计算银行余额和总余额。

银行模型

代码语言:javascript
复制
public function credits(){
    return $this->hasMany(Transaction::class, foreign_id, primary_id)->where('type', 'credit);
}

public function debits(){
    return $this->hasMany(Transaction::class, foreign_id, primary_id)->where('type', 'debit);
}

刀片:

首先初始化$total变量。然后循环通过$banks以获得每家银行的余额,并将它们相加以获得总余额。

代码语言:javascript
复制
@php( $total = 0) 

@foreach($banks as $key => $bank)
    $balance = $bank->credits->sum('amount') - $bank->debits->sum('amount'); // $balance will have each bank balance 
    $total += $balance;
@endforeach

{{ $total }} // get total balance for all banks

编辑

如果要对金额使用exchangeRate计算:

代码语言:javascript
复制
@php($total = 0)
@foreach($banks as $key => $bank)
    $credits = 0;
    $debits = 0;
    @foreach($bank->transactions as $key => $transaction)
        @if($transaction->type  == 'credit')
            $credits += $transaction->amount*$transaction->exchangeRate;
        @elseif($transaction->type  == 'dedit')
            $dedits += $transaction->amount*$transaction->exchangeRate;
        @endif
    @endforeach
    $balance = $credits-$debits;
    $total += $balance;
@endforeach
{{ $total }}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67031348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档