Laravel вычисляемое поле для отношений модели как атрибут модели - PullRequest
1 голос
/ 11 апреля 2020

У меня есть модель для Flights. У Flight есть связь с payments_log.

. В таблице payments_log есть два поля: amount и type(Input/Output or add/sub).

Я хочу добавить поле в модель Flight, например, Total_amount.

. total_amount на модели Flight будет полем, вычисленным из relationship.

type   amount
I       5.0
I       10.0
O       2

Total_amount = I+I-O = 13

Что такое лучшая практика?

1 Ответ

2 голосов
/ 11 апреля 2020

Создайте метод доступа в вашей модели Flight, который суммирует столбец amount из таблицы журналов:

public function getTotalAmountAttribute()
{
    // Sum log records of type I (add) 
    // and substract the sum of all log records of type ) (sub)
    return $this->paymentsLog()->where('type', 'I')->sum('amount') - $this->paymentsLog()->where('type', 'O')->sum('amount');
}

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

$flight->total_amount;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...