Извините за длинное название, я просто не знаю, как точно сказать, что я пытаюсь сделать.
Итак, у меня есть таблица таких рейсов.
id | user_id | orig | dest | value |
=======================================
1 | 1 | LHR | WLG | 34000.00 |
2 | 1 | LHR | WLG | 47000.00 |
3 | 1 | LHR | AKL | 22000.00 |
Я хочу получить массив адресатов ('dest'
) с суммой значений любой записи с этим адресатом.
В настоящее время я использую Eloquent для извлечения записей, затем groupBy на 'dest'
$transactions = AirTran::select('orig','dest','value')->where('user_id','1')->get();
$group_tran = $transactions->groupBy('dest');
К сожалению, это возвращает каждую строку отдельно в массиве вместо суммы значения:
WLG:
0:
orig: 'LHR'
dest: 'WLG'
value: '34000.00'
1:
orig: 'LHR'
dest: 'WLG'
value: '47000.00'
AKL:
0:
orig: 'LHR'
dest: 'AKL'
value: '22000.00'
Но то, что я на самом деле хочу, это:
WLG:
0:
orig: 'LHR'
dest: 'WLG'
value: '81000.00'
AKL:
0:
orig: 'LHR'
dest: 'AKL'
value: '22000.00'
Есть ли способ получить сумму столбца 'value'
, используя Eloquent вместо PHP, как я ниже:
foreach($transactions as $transaction) {
if(isset($data[$transaction->dest]['revenue'])){
$data[$transaction->dest]['revenue'] += $transaction->value;
} else {
$data[$transaction->dest]['revenue'] = $transaction->value;
}
}