2016-11-16 6 views
0

私は、次のようなデータベースクエリ(クエリビルダ、Eloquentではない)の結果として得られる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, 
      ) 
) 

私がこの

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

ようGROUPBYを使用しているが、与えていない、それはもう一つの層を有している場合、私は[0] [製品1]

のような意味でも結構です所望の結果。 Laravelのコレクションメソッドを使用してどのように行うことができますか?

答えて

0

私はあなたが望むものがこれだと信じています。パラメータは、ケースの値ではなく、キーの名前でなければなりません。

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

関連する問題