2016-08-02 4 views
1

Ich gebe JSON von LengthAwarePaginator zurück, aber die data-Eigenschaft von JSON ist kein Array. Ich brauche es, um ein Array zu sein. Irgendwelche Ideen?Laravel 5: LengthAwarePaginator hat JSON nicht Array zurückgegeben

// 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); 

zurückgegebenen Daten:

{ 
"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

konvertieren Sie einfach Json zu Array mit 'json_decode' –

+0

in der' array_slice' Änderung 'true' zu' false' –

Antwort

4

Das Problem ist, dass die ids die Tasten Ihres Array bleiben, wenn array_slice -Ing. Aber da einige Schlüssel fehlen, insbesondere 0, 1, 2, …, wird das Array fortan als assoziativ behandelt (['key1'=>'value1', 'key2'=>'value2', …]) und nicht numerisch indiziert (['value1', 'value2', …]), wenn es nach json kodiert wird.

Die Lösung besteht darin, Ihre array_slice(…) mit einem array_values() Aufruf erfolgreich zu sein.

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

Edit: Wenn Ihr $arrayOfData ist ein beredtes/Illuminate Collection, können Sie die Methoden ->slice($offset, $pageSize)->values() auf sie aus. Sieht schöner aus!