Stránkovanie
Pridajte HasPageSize do FormRequestu, ktorý tak zvaliduje a určí veľkosť stránky:
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
];
}
}$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:
// 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 kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
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.