---
title: "Stránkovanie — Query Builder for Laravel | Roundly"
description: "Validujte a pevne obmedzte per_page traitom HasPageSize pre FormRequest; nakonfigurovaný názov stránky sa použije automaticky."
url: https://roundly-consulting.com/sk/open-source/navody/query-builder-for-laravel/strankovanie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Query Builder for Laravel](https://roundly-consulting.com/sk/open-source/navody/query-builder-for-laravel.md)

# Stránkovanie

Pridajte HasPageSize do FormRequestu, ktorý tak zvaliduje a určí veľkosť stránky:

```php
use Illuminate\Foundation\Http\FormRequest;
use RoundlyConsulting\QueryBuilder\Concerns\HasPageSize;

final class ListPostsRequest extends FormRequest
{
    use HasPageSize;

    public function rules(): array
    {
        return [
            ...$this->pageSizeRules(),
            // your other rules
        ];
    }
}
```

```php
$posts = QueryBuilder::for(Post::class)
    ->allowedFilters('status')
    ->paginate($request->perPage());
```

## Čo trait poskytuje

| Metóda | Vracia |
| --- | --- |
| `pageSizeRules()` | \['per\_page' => \['nullable', 'integer', 'min:1', 'max:100'\]\] — zlúčte do rules(). |
| `perPage()` | Požadovanú veľkosť obmedzenú na max\_per\_page; default\_per\_page, ak chýba alebo je neplatná. |
| `pageName()` | Nakonfigurovaný pagination.page\_name. |

per\_page nad max\_per\_page, pod 1 alebo necelé číslo vráti 422. perPage() navyše hodnotu pevne obmedzí na max\_per\_page a pri chýbajúcej či neplatnej hodnote použije default\_per\_page — ako druhá línia obrany.

## Názov parametra stránky

paginate() a simplePaginate() na QueryBuilder automaticky dostanú nakonfigurovaný pagination.page\_name, takže premenovanie v konfigurácii platí v requeste aj vo vygenerovaných odkazoch. Na prepísanie odovzdajte pageName: sami, alebo si názov prečítajte z requestu, keď paginator skladáte ručne:

```php
// config/query-builder.php
'pagination' => [
    'page_name' => 'p',
    // ...
],

// QueryBuilder applies it: ?p=2, and the paginator links use ?p=
QueryBuilder::for(Post::class)->paginate($request->perPage());

// A paginator you build yourself
Post::query()->paginate($request->perPage(), pageName: $request->pageName());
```

Výslovne odovzdaný názov stránky — ako pageName: alebo tretí pozičný argument — má vždy prednosť. Cursor stránkovanie je mimo rozsahu.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/query-builder-for-laravel.md)
