У меня есть коллекция Laravel, такая как следующая, которая получена в результате запроса к базе данных (построитель запросов, а не Красноречивый).Формат Коллекции Laravel
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[0] => stdClass Object
(
[product_name] => Product 1
[sub_product_name] => sub_prod_1
)
[1] => stdClass Object
(
[product_name] => Product 1
[sub_product_name] => sub_prod_2
)
[2] => stdClass Object
(
[product_name] => Product 1
[sub_product_name] => sub_prod_3
)
[3] => stdClass Object
(
[product_name] => Product 2
[sub_product_name] => sub_prod_21
)
[4] => stdClass Object
(
[product_name] => Product 2
[sub_product_name] => sub_prod_22
)
[5] => stdClass Object
(
[product_name] => Product 2
[sub_product_name] => sub_prod_23
)
[6] => stdClass Object
(
[product_name] => Product 3
[sub_product_name] => sub_prod_31
)
)
)
Теперь я хотел бы преобразовать массив следующим образом и отправить его как ответ API. В основном это инициализирует подсчеты для каждого из продуктов, а затем позже подсчет будет добавлен к этому.
Array
(
[Product 1 ] => stdClass Object
(
sub_prod_1 => 0,
sub_prod_2 => 0,
sub_prod_3 => 0
),
[Product 2 ] => stdClass Object
(
sub_prod_21 => 0,
sub_prod_22 => 0,
sub_prod_23 => 0
),
[Product 3 ] => stdClass Object
(
sub_prod_31 => 0,
)
)
Это также хорошо, если у него есть еще один слой, я имею в виду, как [0] [Product 1]
Я использовал GroupBy как этот
$productPoints = $productCollection->groupBy(function ($item) {
return $item->product_name;
});
, но не давая желаемый результат. Как это сделать, используя методы сбора Laravel?