I have an eloquent collection and I have used the mapToGroups as follows.
$new = $rolls->map(function ($roll) {
return [
...$roll->toArray(),
'defects' => $roll->defects->mapToGroups(function ($defect) {
return [$defect['td_block'] => $defect]; // td_block > block_1, block_2, block_3
})
];
});
The new collection is this.
[
"id" => 61
"batch_id" => 27
"defects" => [
'block_1' => [
0 => ["category" => "category_two", td_block" => block_1],
1 => ["category" => "category_one", td_block" => block_1],
2 => ["category" => "category_three", td_block" => block_1],
3 => ["category" => "category_one", td_block" => block_1],
],
'block_2' => [
0 => ["category" => "category_three", td_block" => block_2],
1 => ["category" => "category_one", td_block" => block_2],
]
]
]
I want the above array to change as follows.
[
"id" => 61
"batch_id" => 27
"defects" => [
'category_one' => [
block_1 => ["category" => "category_one", td_block" => block_1],
block_2 => ["category" => "category_one", td_block" => block_2],
block_3 => ["category" => "category_one", td_block" => block_3],
block_4 => ["category" => "category_one", td_block" => block_4],
],
'category_three' => [
block_3 => ["category" => "category_three", td_block" => block_3],
block_4 => ["category" => "category_three", td_block" => block_4],
]
]
]
I tried several options like mapWithKeys, but didn't work.