📄 Paginación de resultados
Organiza y muestra tus datos fácilmente
Cuando trabajamos con grandes volúmenes de datos, es fundamental mostrar los resultados de manera paginada.
Laravel facilita esta tarea con métodos integrados como
paginate() y simplePaginate(), que generan automáticamente los enlaces y metadatos necesarios.
📘 Ejemplo básico de paginación
Puedes aplicar la paginación directamente en tus controladores al obtener datos del modelo:
app/Http/Controllers/ProductController.php
public function index()
{
$products = Product::paginate(10); // 10 resultados por página
return view('products.index', compact('products'));
}
En tu vista puedes mostrar los enlaces de paginación fácilmente con:
resources/views/products/index.blade.php
<table class="table table-striped">
<thead>
<tr><th>ID</th><th>Nombre</th><th>Precio</th></tr>
</thead>
<tbody>
@foreach ($products as $product)
<tr>
<td>{{ $product->id }}</td>
<td>{{ $product->name }}</td>
<td>{{ $product->price }}€</td>
</tr>
@endforeach
</tbody>
</table>
{{ $products->links() }}
🌐 Paginación en APIs
Laravel también puede paginar resultados en formato JSON.
Si estás construyendo una API, simplemente usa el método paginate() dentro de tu controlador API.
app/Http/Controllers/Api/ProductController.php
public function index()
{
$products = Product::paginate(5);
return response()->json($products);
}
Esto generará automáticamente un JSON con la estructura:
{
"current_page": 1,
"data": [
{ "id": 1, "name": "Televisor", "price": 250 },
{ "id": 2, "name": "Lavadora", "price": 400 }
],
"first_page_url": "http://api.tusitio.com/products?page=1",
"last_page": 3,
"per_page": 5,
"total": 15
}
🎨 Personalizar el estilo de la paginación
Si usas Bootstrap, Laravel puede adaptar automáticamente los estilos.
Solo agrega la siguiente línea en tu AppServiceProvider:
app/Providers/AppServiceProvider.php
use Illuminate\Pagination\Paginator;
public function boot(): void
{
Paginator::useBootstrap();
}
Esto hará que los enlaces de paginación se vean con el estilo de Bootstrap, integrándose perfectamente en tu frontend.
✅ Buenas prácticas
- Define un número razonable de elementos por página (entre 10 y 25).
- Evita paginar consultas con joins pesados sin índices adecuados.
- Usa
simplePaginate()cuando no necesites la cuenta total de registros (mejora el rendimiento). - Para APIs, incluye siempre los metadatos de paginación en la respuesta JSON.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias