Как показать банковский баланс через транзакции в laravel

У меня есть таблица банка и таблица транзакций. Связь - один-ко-многим, поэтому у банка может быть много транзакций. Таблица транзакций имеет внешний ключ банка (bank_id). и каждая транзакция имеет столбец «тип», который является либо кредитом, либо дебетом. Я хочу показать баланс каждого банка на основе его транзакций.

Вот мои вопросы:

  1. Как выбрать конкретный банк?
  2. Как рассчитать баланс для банка?
  3. Должен ли я рассчитывать его в контроллере, модели или представлении? Какой из них лучше?

Вот таблица транзакций:  введите описание изображения здесь заранее спасибо!


person Mahdi Jafari    schedule 06.04.2021    source источник


Ответы (3)


Я не уверен, что вы пытаетесь сделать. Вы бы выбрали банк, например

$bank = Bank::find(2);

и ты мог бы сделать что-нибудь вроде

$bank->transactions->sum('amount');
person damask    schedule 06.04.2021
comment
Ага. Я хотел показать баланс каждого банка в моей базе данных. Мне пришлось просуммировать все кредиты, принадлежащие банку, затем суммировать все дебеты для этого банка, а затем найти баланс, который представляет собой кредиты за вычетом дебетов. Итак, используя отношения, о которых вы говорили. Я написал этот код. ‹Td› {{$ bank- ›транзакции-› где ('тип', 'кредит') - ›сумма ('сумма') - $ банк-› транзакции- ›где ('тип', 'дебет') -› сумма ('сумма')}} ‹/td› - person Mahdi Jafari; 07.04.2021

Вам необходимо создать отношения в модели, например, в модели транзакций:

public function bank(){
 return $this->belongsTo(Bank::class);
}

и это в модели банка

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

Затем вы можете получить к ним доступ следующим образом:

$this->bank->transactions;

В Laravel есть отличные документы, вам просто нужно их прочитать, например Отношения

person damask    schedule 06.04.2021
comment
спасибо @damask за быстрый ответ. Я установил отношения между банком и транзакцией. но теперь я застрял в том, как выбрать конкретный банк, а затем показать его баланс. вы можете помочь с этим? - person Mahdi Jafari; 06.04.2021
comment
спасибо @damask! Я понял идею из вашего кода, и проблема решена. - person Mahdi Jafari; 06.04.2021
comment
@MahdiJafari Вы должны принять ответ или объяснить, как вы решили свою проблему, чтобы помочь другим. - person damask; 07.04.2021

Я хотел показать баланс каждого банка в моей базе данных. Мне пришлось просуммировать все кредиты, принадлежащие банку, затем суммировать все дебеты для этого банка, а затем найти баланс, который представляет собой кредиты за вычетом дебетов. Итак, используя отношения, о которых вы говорили. Я написал этот код.

<td>{{$bank->transactions->where('type', 'credit')->sum('amount') - $bank->transactions->where('type', 'debit')->sum('amount')}}</td>
person Mahdi Jafari    schedule 07.04.2021