2016-11-16 2 views
0

다음과 같은 Laravel 컬렉션이 데이터베이스 쿼리 (쿼리 작성기, Eloquent가 아닌)의 결과로 가져옵니다.형식 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, 
      ) 
) 

그것은 I [0]과 같은 의미도 괜찮 [제품 1]

I이

$productPoints = $productCollection->groupBy(function ($item) { 
      return $item->product_name; 
}); 

같은 GROUPBY 사용했지만주는되지 원하는 결과. Laravel 수집 방법을 사용하여 어떻게 할 수 있습니까?

답변

0

나는 당신이 원하는 것을 믿습니다. 매개 변수는 케이스의 값이 아닌 키의 이름이어야합니다.

$productPoints = $productCollection->groupBy('product_name');