Paginação e Queries no MUCRM ORM
A MUCRM possui paginação nativa integrada ao ORM. Com poucas linhas você consegue listar registros, dividir resultados em páginas e renderizar links automaticamente com persistência de filtros da URL.
Paginação Básica
paginate(int $limit)
Define quantos registros serão exibidos por página.
$users = customer::select()->paginate(10);Exibe 10 usuários por página.
Renderizando Links
links()
Renderiza automaticamente os links de navegação.
$users->links();Benefícios:
- Detecta página atual
- Próxima página
- Página anterior
- Mantém parâmetros da URL automaticamente
Exemplo de URL gerada:
?page=2&status=active&search=thomasPersistência de Parâmetros
Se sua listagem possui filtros, buscas ou ordenação, os parâmetros atuais permanecem nos links gerados.
$users = customer::where('status', 'active')
->paginate(10);
$users->links();Se o usuário estiver em /users?status=active, os links continuarão com:
/users?page=2&status=activeTemplate Personalizado
Você pode criar paginações customizadas. Crie o arquivo em:
views/custom/pagination/arquivo.mucrm.phpDepois renderize:
$users->links('arquivo');Exemplos Reais de Queries
Listar usuários paginados
$users = customer::select("name")->paginate(15);Buscar usuários ativos
$users = customer::where('status', 1)
->paginate(10);Buscar ordenando por ID decrescente
$users = customer::order_by('id', 'DESC')
->paginate(20);Busca com campo nome
$users = customer::where('name', 'LIKE', '%Thomas%')
->paginate(10);Usuários ativos ordenados
$users = customer::where('status', 1)
->order_by('name', 'ASC')
->paginate(25);Produtos com filtro por categoria
$products = product::where('category_id', 3)
->paginate(12);Notícias recentes
$posts = post::order_by('id', 'DESC')
->paginate(5);Exemplo no Controller
public function index()
{
$users = customer::where('status', 1)
->order_by('id', 'DESC')
->paginate(10);
return view('admin.users.index', compact('users'));
}Exemplo na View
:foreach($users as $user)
<p>{{ $user->name }}</p>
:endforeach
<?= $users->links(); ?>Com Paginação Custom
<?= $users->links('arquivo'); ?>Boas Práticas
- Use limites entre 10 e 30 registros.
- Sempre combine
where()compaginate()em listas grandes. - Prefira ordenar resultados.
- Crie templates customizados para painel admin.
- Evite paginações enormes sem filtro.
Resumo Rápido
customer::select()->paginate(10);
customer::where('status', 1)->paginate(10);
customer::order_by('id', 'DESC')->paginate(20);
$items->links();
$items->links('arquivo');