Quando paginamos resultados temos que ter em mente que devemos formar a melhor query possível para não ter que fazer um loop sobre o resultado para acrescentar ou modificar dados. Mas existem casos onde cada resultado pode ter dependências e estas não podem ser incluídas na query porque isso multiplicaria os resultados.
Exemplo
Você tem uma tabela de usuários e outra de logs operacionais dele. Se você precisar da lista de logs de cada usuário ao fazer a consulta para a lista de usuários e simplesmente fizer um join no sql os usuários serão duplicados para cada linha de log. Isso é péssimo.
Solução
Por isso devemos incluir um callback que será realizado apenas no loop da paginacao e poderá incluir subitens nos resultados, isso deixará o código talvez um pouco mais complexo, mas ajudará e muito na performance.
Quando paginamos resultados temos que ter em mente que devemos formar a melhor query possível para não ter que fazer um loop sobre o resultado para acrescentar ou modificar dados. Mas existem casos onde cada resultado pode ter dependências e estas não podem ser incluídas na query porque isso multiplicaria os resultados.
Exemplo
Você tem uma tabela de usuários e outra de logs operacionais dele. Se você precisar da lista de logs de cada usuário ao fazer a consulta para a lista de usuários e simplesmente fizer um join no sql os usuários serão duplicados para cada linha de log. Isso é péssimo.
Solução
Por isso devemos incluir um callback que será realizado apenas no loop da paginacao e poderá incluir subitens nos resultados, isso deixará o código talvez um pouco mais complexo, mas ajudará e muito na performance.