2015-10-14 103 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