2016-11-16 94 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, 
      ) 
) 

它也是好的,如果它有一个更层,我的意思是像[0] [产品1]

我已经使用GROUPBY这样

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

但不给予预期的结果。我如何使用Laravel收集方法来做到这一点?

回答

0

我相信你想要的是这个。该参数应该是键的名称而不是您的情况下的值。

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