【问题标题】:Laravel groupBy value and store the sum of another value with the groupBy value as the keyLaravel groupBy 值并以 groupBy 值作为键存储另一个值的总和
【发布时间】: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 值。你想买哪一个?

标签: laravel eloquent


【解决方案1】:

你可以使用 eloquant 的 sum 函数。 你的代码可以是:

$transactions = AirTran::select('orig','dest','value')->where('user_id','1')->get();

$group_tran = $transactions->groupBy('dest') ->sum('值');

或直接使用一个命令:

$group_tran= AirTran::select('orig','dest','value')->where('user_id','1')
                       ->sum('value')
                       ->groupBy('dest')
                       ->where('user_id','1')
                       ->get();

【讨论】:

  • 感谢您的回复。当我尝试使用 sum() 时,我得到的响应为 0。这可能是因为值位于另一个用数字索引的数组中吗?
猜你喜欢
  • 2022-07-08
  • 2021-01-18
  • 2018-09-05
  • 2020-12-19
  • 2021-09-18
  • 2018-09-09
  • 2020-11-17
  • 1970-01-01
  • 2020-12-17
相关资源
最近更新 更多