Привет, у меня есть оговорки и время их начала. Теперь мне нужно перенести его.
$monthlyAmounts = Reservation::all()
->groupBy(function ($proj) {
return cdate($proj->start_time)->format('Y-m');
})
->map(function ($month) {
return $this->sumTime($month);
});
sumTime - моя функция для вычисления разницы между временем начала и конца. cdate - это помощник -> carbon :: parse ($ date) ..
В результате:
array:2 [▼
"2020-01" => 60
"2020-02" => 420
]
Need
Но для API было бы лучше Вот так:
[
"2020" => [
'01' => 60,
'02' => 30
],
"2021" => [
'01' => 30,
]
]
Моя попытка
К сожалению, я не могу сделать это так. Я попытался:
$monthlyAmounts = Reservation::all()
->groupBy(function ($proj) {
return cdate($proj->start_time)->format('Y-m');
})
->map(function ($month) {
return $this->sumTime($month);
})
->mapToGroups(function ($item,$key) {
$arrkey = explode('-',$key);
return [$arrkey[0]=>[$arrkey[1]=>$item]];
});
Но это делает это:
array:1 [▼
2020 => array:2 [▼
0 => array:1 [▼
"01" => 60
]
1 => array:1 [▼
"02" => 420
]
]
]
Так что я не могу сделать $ res ['2020'] ['01']. Как это сделать?