0

我有三个系列。

SalaryCollection

在此处输入图像描述

BonusCollection

在此处输入图像描述

扣除集合

在此处输入图像描述

他们都有日期,这在其中一些人中很常见。我想将这三个合并到一个集合中,以使三个中具有相同日期的对象成为一个。像这样的东西:

#items:array:2[
0=>{
+"date":"1-2020"
+"salaries":36500.0
+"deductions":1500.0
+"bonuses":7000.0
}
1=>{
+"date":"2-2020"
+"salaries":20000.0
+"deductions":1000.0
+"bonuses":5000.0
}
]

我该怎么做?

4

1 回答 1

0

我不确定这是否是最好的方法,但这就是我让它发挥作用的方式。

     $salaryCollection = $salaryCollection->map(function ($item, $key) use ($bonusCollection) {
        $single_bonus = $bonusCollection->where('date', $item->date);
        if (!$single_bonus->isEmpty()) {
            return collect($item)->put('bonuses', $single_bonus->first()->bonuses);
        } else {
            return collect($item)->put('bonuses', 0);
        }
    });

    $salaryCollection = $salaryCollection->map(function ($item, $key) use ($deductionCollection) {
        $single_deduction = $deductionCollection->where('date', $item['date']);
        if (!$single_deduction->isEmpty()) {
            return collect($item)->put('deductions', $single_deduction->first()->deductions);
        } else {
            return collect($item)->put('deductions', 0);
        }
    });
于 2020-01-14T09:06:28.233 回答