2016-08-02 47 views
1

我從LengthAwarePaginator返回JSON,但JSON的data屬性不是數組。我需要它是一個數組。有任何想法嗎?Laravel 5:LengthAwarePaginator返回的JSON不是數組

// grab query parameters 
$pageNumber = $request->input('page'); 
$pageSize = $request->input('pageSize'); 
// if query params do not exist call with defaults 
if(!$pageNumber) { 
    $pageNumber = 1; 
} 

if(!$pageSize) { 
    $pageSize = 5; 
} 

$offset = ($pageNumber * $pageSize) - $pageSize; 
// slice full array data based on page number and page size 
$itemsForCurrentPage = array_slice($arrayOfData, $offset, $pageSize, true); 
return new LengthAwarePaginator($itemsForCurrentPage, count($this->orgUsers), $pageSize, $pageNumber); 

返回數據:

{ 
"total": 30, 
"per_page": 5, 
"current_page": 2, 
"last_page": 6, 
"next_page_url": "/?page=3", 
"prev_page_url": "/?page=1", 
"from": 6, 
"to": 10, 
"data": { 
    "5": { 
    "userId": "564110eadcb39832268ea873", 
    "email": "[email protected]", 
    "isActive": true, 
    "firstName": "dsdfgdfg", 
    "lastName": "dsdfgdfg", 
    "permissionType": "dsdfgdfg" 
    }, 
    "6": { 
    "userId": "564110ea2169bc358a3b65c2", 
    "email": "[email protected]", 
    "isActive": false, 
    "firstName": "dsdfgdfg", 
    "lastName": "dsdfgdfg", 
    "permissionType": "dsdfgdfg" 
    }, 
    "7": { 
    "userId": "564110eaee662f30c4bd6772", 
    "email": "[email protected]", 
    "isActive": true, 
    "firstName": "dsdfgdfg", 
    "lastName": "dsdfgdfg", 
    "permissionType": "dsdfgdfg" 
    }, 
    "8": { 
    "userId": "dsdfgdfg", 
    "email": "[email protected]", 
    "isActive": true, 
    "firstName": "dsdfgdfg", 
    "lastName": "dsdfgdfg" 
    }, 
    "9": { 
    "userId": "564110eaf9526eb5ddd673a4", 
    "email": "[email protected]", 
    "isActive": true, 
    "firstName": "dsdfgdfg", 
    "lastName": "dsdfgdfg" 
    } 
} 
} 

TIA

+0

只是使用'array_slice'中的'json_decode' –

+0

將json轉換爲數組將'true'更改爲'false' –

回答

4

的問題是ids保持你的數組時array_slice -ing的鑰匙。但是由於某些鍵缺失,尤其是0, 1, 2, …,因此當編碼爲json時,陣列從此被視爲關聯(['key1'=>'value1', 'key2'=>'value2', …])而不是數字索引(['value1', 'value2', …])。

解決方法是用array_values()呼叫接通您的array_slice(…)

return new LengthAwarePaginator(array_values($itemsForCurrentPage), count($this->orgUsers), $pageSize, $pageNumber); 

編輯:如果您的$arrayOfData雄辯地/照亮Collection,您可以使用方法->slice($offset, $pageSize)->values()就可以了。看起來更好!