【发布时间】:2018-06-28 10:02:26
【问题描述】:
抱歉标题冗长,我只是不确定如何准确地表达我想要做的事情。
所以我有一张这样的航班表。
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 提取记录,然后在 'dest' 上进行 groupBy
$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'
有没有办法使用 Eloquent 而不是使用 PHP 来获取 'value' 列的总和,如下所示:
foreach($transactions as $transaction) {
if(isset($data[$transaction->dest]['revenue'])){
$data[$transaction->dest]['revenue'] += $transaction->value;
} else {
$data[$transaction->dest]['revenue'] = $transaction->value;
}
}
【问题讨论】:
-
每个
dest可以有多个orig值。你想买哪一个?