La paginación de Laravel no funciona con la matriz en lugar de la colección
Estoy tratando de paginar un conjunto de datos de matriz y ha resultado ser más desafiante de lo que pensaba.
Estoy usando Laravel 5
Así que tengo una interfaz / repositorio abstracto al que se extienden todos mis otros modelos y creé un método dentro de mi repositorio abstracto llamado paginate. He incluido ambos
use Illuminate\Pagination\Paginator;
y
use Illuminate\Pagination\LengthAwarePaginator;
Aquí esta el método
public function paginate($items,$perPage,$pageStart=1)
{
// Start displaying items from this number;
$offSet = ($pageStart * $perPage) - $perPage;
// Get only the items you need using array_slice
$itemsForCurrentPage = array_slice($items, $offSet, $perPage, true);
return new LengthAwarePaginator($itemsForCurrentPage, count($items), $perPage,Paginator::resolveCurrentPage(), array('path' => Paginator::resolveCurrentPath()));
}
Como se puede imaginar, esta función acepta una variedad de$items
a $perPage
variable que indica cuántos elementos hay que paginar y una$pageStart
eso indica desde qué página comenzar.
La paginación funciona y puedo verLengthAwarePaginator
instancia cuando estoy haciendo undd()
, todos sus valores parecen estar bien.
El problema comienza cuando estoy mostrando los resultados.
Cuando lo hago{!! $instances->render() !!}
La pantalla de enlaces del paginador está bien, elpage
El parámetro cambia según los enlaces, pero los datos no cambian. Los datos son los mismos en todas las páginas. Cuando estoy usando Eloquent por ejemploModel::paginate(3)
todo funciona bien, pero cuando yodd()
estaLengthAwarePaginator
es idéntico alLengthAwarePaginator
instancia de mi paginador personalizado con la excepción de que pagina una serie de cursos y no una colección.