DbPHP

DbPHP

v1.0.0

Laboratório Interativo & Telemetria em Tempo Real (SQLite In-Memory)

Tempo de Execução
0.783 ms
0.000783 s
Registros Retornados
8
$result->count
Driver Ativo
SQLite PDO
:memory: (Zero overhead)
Memória da Query
2.66 KB
Peak isolado da query
PAGINATION

Paginação Nativa (PaginatedResult)

Executa consulta paginada com contagem automática (COUNT) e injeção de LIMIT/OFFSET, retornando metadados completos de paginação.

Vue 3 Reativo via CDN Paginação, filtros e telemetria sem recarregar a página
Tempo API: {{ responseTimeMs }} ms
R$ {{ minPreco.toFixed(2) }}
Código Produto Categoria Preço Unitário Estoque
Nenhum produto atende aos filtros atuais.
#{{ item.id_produto }} {{ item.nome_produto }} {{ item.nome_categoria }} R$ {{ Number(item.preco).toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) }} {{ item.estoque }} un
Exibindo {{ pagination.from || 0 }}-{{ pagination.to || 0 }} de {{ pagination.total || 0 }} registros (Página {{ pagination.current_page || 1 }} de {{ pagination.last_page || 1 }})
PHP 8.2+ · Prepared Statements & Facade DB
$pagina = (int)($_GET['page'] ?? 1);
$porPagina = 4;

// Paginação automática com parâmetros nomeados:
$paginado = DB::paginate(
    sql: "SELECT p.id_produto, p.nome_produto, c.nome_categoria, p.preco, p.estoque
          FROM produtos p
          INNER JOIN categorias c ON c.id_categoria = p.id_categoria
          WHERE p.preco > :preco
          ORDER BY p.id_produto ASC",
    params: ["preco" => 50.00],
    page: $pagina,
    perPage: $porPagina
);

// Metadados ricos disponíveis:
$itens       = $paginado->items;           // 4 itens desta página
$total       = $paginado->total;           // 9 produtos no total
$paginaAtual = $paginado->currentPage;     // 1, 2 ou 3
$ultimaPagina= $paginado->lastPage;        // 3
$faixa       = "De {$paginado->from} até {$paginado->to}";
$temMais     = $paginado->hasMorePages;    // true se houver próxima
Formato JSON do resultado ($result->rows)
[
    {
        "id_produto": 101,
        "nome_produto": "PLA Preto 1kg",
        "nome_categoria": "Insumo",
        "preco": 89.9,
        "estoque": 45
    },
    {
        "id_produto": 102,
        "nome_produto": "PETG Branco 1kg",
        "nome_categoria": "Insumo",
        "preco": 95.5,
        "estoque": 30
    },
    {
        "id_produto": 104,
        "nome_produto": "Mesa PEI Texturizada",
        "nome_categoria": "Peça",
        "preco": 120,
        "estoque": 15
    },
    {
        "id_produto": 105,
        "nome_produto": "Resina 8K (Lançamento)",
        "nome_categoria": "Insumo",
        "preco": 180,
        "estoque": 25
    }
]
clientes
  • id_cliente (INTEGER PK)
  • nome_cliente (TEXT)
  • uf (TEXT)
  • cidade (TEXT)
  • vip (INTEGER 0|1)
  • saldo_credito (REAL)
produtos
  • id_produto (INTEGER PK)
  • id_categoria (INTEGER FK)
  • nome_produto (TEXT)
  • preco (REAL)
  • estoque (INTEGER)
pedidos & itens
  • pedidos.id_pedido (INTEGER PK)
  • pedidos.id_cliente (INTEGER FK)
  • pedidos.status (TEXT)
  • itens_pedido.id_item (INTEGER PK)
  • itens_pedido.qtd (INTEGER)
  • itens_pedido.preco_unitario (REAL)