2015-10-14 71 views
2

组阵列的项目,我有以下雄辩查询:与雄辩

$extras = EventExtra::select('id', 'category', 'name', 'price', 'description', 'company')->get(); 

它从我这里得到从我的数据库的一些数据。我想要的是要由公司第二分组返回的数据两次,第一次由类别,然后使最终我有这样的事返回给客户端:

[ 
    { 
    "name": "donation", 
    "collection": [ 
     { 
      "name": "sampleCompany1", 
      "array": [ 
      { 
       "name": "extra1", 
       "description": "", 
       "value": "" 
      }, 
      { 
       "name": "extra4", 
       "description": "", 
       "value": "" 
      }, 
      { 
       "name": "extra6", 
       "description": "", 
       "value": "" 
      } 
      ] 
     } 
     ] 
    }, 
{ 
    "name": "donation", 
    "collection": [ 
     { 
     "name": "sampleCompany2", 
     "array": [ 
      { 
      "name": "extra2", 
      "description": "", 
      "value": "" 
      }, 
      { 
      "name": "extra3", 
      "description": "", 
      "value": "" 
      } 
     ] 
     } 
    ] 
}] 

我刚键入以上我自己所以它可能不是有效的对象数组,但基本上它显示了我想在这里完成。

回答

1

您可以使用Collection来构建您的自定义对象。事情是这样的:

$return_data = Collect(); 

集合中与属性添加项目,您可以使用put功能。

$inner_data->put('name',$extras->name); 

您还可以在集合中添加集合。 要只是把现有集合的集合中,用push功能

$inner_data->push($some_collection) 

编辑:既然你想要一个工作示例,请参见下面这样:

比方说,你想创建以下使用集合:

{ 
    "name": "extra1" 
    "description": "", 
    "value": "" 
} 

你会做这样的事情:

$my_collection = Collect(); 
$my_collection->put('name','extra1'); 
$my_collection->put('description',''); 
$my_collection->put('value',''); 

现在,您可以将此集合添加到另一个不需要密钥的集合。所以让我们现在说,它看起来像这样:

[ 
    { 
    "name": "extra1" 
    "description": "", 
    "value": "" 
    }, 
    { 
    "name": "extra4" 
    "description": "", 
    "value": "" 
    } 
] 

你现在会做什么:

$my_final_collection = Collect(); 
foreach($my_collections as $my_collection) { 
    $my_final_collection->push($my_collection); // and so on in a loop 
} 
+0

你好,谢谢你,但我在你使用“return_data”第一则“inner_data”糊涂,我可以也看不到循环或任务。 – user3718908

+0

我没有给你你问题的确切代码。我给你一个使用Collection构建自定义对象的想法。这不是完整的代码。 – codegeek

+0

是的我明白,但这个“收集()”的东西是我的新东西,我从来没有使用过,甚至没有看过它,我检查了文档和样本laravel文档,但该部分有很少的信息。如果我能看到你的工作样品,它会真的帮助我很多。 – user3718908