Polia na triedenie deklarujete cez allowedSorts(). Reťazec sa zmení na AllowedSort::field(); AllowedSort::custom() pripojí vlastnú implementáciu Sort:
use RoundlyConsulting\QueryBuilder\AllowedSort;
->allowedSorts(
'title', // shorthand for AllowedSort::field('title')
AllowedSort::field('popularity', 'views'), // sort=-popularity → ORDER BY views DESC
AllowedSort::custom('length', new TitleLengthSort),
)
->defaultSort('-created_at') // applied only when no sort param is presentSyntax triedenia
- sort=title triedi vzostupne; úvodné - (sort=-title) triedi zostupne.
- sort=-created_at,name použije viac triedení zľava doprava.
- Opakovaný stĺpec sa zlúči do prvého výskytu — sort=title,-title triedi podľa title vzostupne, a to raz.
- Použije sa najviac limits.max_sorts stĺpcov (predvolene 5), počítané po odstránení duplicít. Rátajú sa len triedenia z allow-listu, takže v režime ignore neznámy token nikdy nevytlačí platný, ktorý nasleduje za ním.
Predvolené triedenie
defaultSort() má rovnakú syntax — prefix - a viac stĺpcov oddelených čiarkami — a spustí sa len vtedy, keď request neuvádza žiadne triedenie — alebo v režime ignore žiadne, ktoré allow-list pozná. Token predvoleného triedenia, ktorý zodpovedá povolenému triedeniu, ho použije (vrátane interného stĺpca či vlastného triedenia); akýkoľvek iný token sa zoradí ako obyčajný stĺpec, takže predvolené triedenie nemusí byť v allow-liste:
QueryBuilder::for(Post::class)
->allowedSorts('title', AllowedSort::field('popularity', 'views'))
->defaultSort('-popularity,id'); // ORDER BY views DESC, id ASC
// ?sort=title → ORDER BY title ASC (the default is skipped)Prehľad metód
| Metóda | Efekt |
|---|---|
AllowedSort::field($name, $internalName = null) | orderBy(<column>, <direction>) |
AllowedSort::custom($name, Sort $sort, $internalName = null) | Deleguje na vašu implementáciu Sort. |
defaultSort(string $sort) | Poradie, keď request neobsahuje parameter sort. |
Smery predstavuje enum SortDirection: Ascending (asc) a Descending (desc); SortDirection::fromToken('-title') určí smer tokenu.
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.