A paginação do Laravel não funciona com array em vez de coleção
Estou tentando paginar um conjunto de dados de matriz e ele se mostrou mais desafiador do que eu pensava.
Estou usando o Laravel 5
Portanto, eu tenho uma interface / repositório abstrato que todos os meus outros modelos estendem e eu criei um método dentro da minha chamada de repositório abstrato paginada. Eu incluí ambos
use Illuminate\Pagination\Paginator;
e
use Illuminate\Pagination\LengthAwarePaginator;
Aqui está o 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()));
}
Então, como você pode imaginar, essa função aceita uma matriz de$items
a $perPage
variável que indica quantos itens a serem paginados e uma$pageStart
que indica de qual página iniciar.
A paginação funciona e eu posso verLengthAwarePaginator
exemplo, quando estou fazendo umadd()
, todos os seus valores parecem bons.
O problema começa quando estou exibindo os resultados.
Quando eu faço{!! $instances->render() !!}
Os links do paginador estão bem, opage
O parâmetro muda de acordo com os links, mas os dados não estão mudando. Os dados são iguais em todas as páginas. Quando estou usando o Eloquent, por exemploModel::paginate(3)
tudo funciona bem, mas quando eudd()
estaLengthAwarePaginator
é idêntico aoLengthAwarePaginator
instância do meu paginador personalizado, com a exceção de que ele pagina uma matriz de curso e não uma coleção.