2015-11-06 99 views
1

我想使用Laravel 5.1 Collection's Unique方法從嵌套對象中過濾唯一ID。Laravel Collection從嵌套數據結構中獲取唯一值

由於數據結構

{ 
    "key1": [ 
    {"id": 1}, 
    {"id": 1} 
    ], 
    "key2": [ 
    {"id": 1}, 
    {"id": 2} 
    ] 
} 

我要重複的id 1從「鍵1」去掉返回相同的數據結構。

我想使用$unique = $collection->unique('id');,但這似乎並不適用於嵌套式數據結構。

所以我想用$收集

$input = $request->all(); 

    $collection = collect($input); 

    $collection->each(function($obj, $key) { 
     //$key is "key1", "key2" 
     //obj is the associated array of objects containing IDs 
    })->unique('id'); 

我不太知道如何組織這個。

結果結構應該是:

{ 
    "key1": [ 
    {"id": 1} 
    ], 
    "key2": [ 
    {"id": 1}, 
    {"id": 2} 
    ] 
} 

回答

3
$collection = $collection->map(function ($array) { 
    return collect($array)->unique('id')->all(); 
});