Site

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=thomas

Persistê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=active

Template Personalizado

Você pode criar paginações customizadas. Crie o arquivo em:

views/custom/pagination/arquivo.mucrm.php

Depois 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() com paginate() 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');