馃搫 Paginaci贸n de resultados

馃搫 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.

Publicar un comentario

0 Comentarios