Вы можете использовать функцию sum в коллекции, а не необработанный SQL внутри запроса.Все еще только ударил БД один раз:
Я не знаю, где находится вычтенный, но если на модели (как это выглядит из вышеприведенного запроса), это даст вам сумму запрашиваемых транзакций:
$adjustment= $transactions->sum('deducted');
или если для отношения
$adjustment= $transactions->sum(function ($transaction) {
return $transaction->transaction?->sum('deducted');
});
Вы также можете получить соответствующее поле с точечной нотацией:
$adjustment= $transactions->sum('transaction.deducted');
Это позволяет вам сохранитьваша коллекция объектов ($transactions
, а также поля name
и id
, как вы отметили, что это необходимо), и все равно получите сумму из исходного запроса.