Zmena poradia order vyrazov v Selection

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Gaprielko
Člen | 42
+
0
-

Zdravim, v modely ma f-ciu, ktorou si vyskladam Selection, kde pouzijem aj order(‚abc‘). Selection posielam dalej a inou f-ciou ho potrebujem upravit tak, ze potrebujem pridat iny order(‚def‘), ktory vsak potrebujem vlozit pred povodny order(‚abc‘), t.j. vo vyslednom SQL budem mat .. ORDER BY def, abc .. a nie .. ORDER BY abc, def ..

Je to mozne?

mystik
Člen | 312
+
0
-

Teď jsem narazil na stejný problém. Můžu když tak připravit pull request, ale nejdřív bych rád znal vyjádření od @hrach zda je to funkce, kterou v NDB chceme.

Use case: Mám repository, které mi vrací nějak seřazenou kolekci záznamů. V některých případech chci ale výchozí pořadí změnit – například pro použítí s datagridem. Aktuálně je jediná možnost si informaci o řazení předávat přes všechna volání až do repository. Pohodlnější by bylo si říct repository o selection a až při přípravě dat pro datagrid změnit řazení podle sloupce vybraného v datagridu.

Představoval bych si to jako jako další metodu v Selection+QueryBuilder třeba preOrder nebo prependOrder, která by se chovala stejně jako order jen to přidala na začátek pole order v queryBuilder.

Alternativně by se dala použít metoda setOrder, která by order kompletně přepsala.

Editoval mystik (30. 9. 2014 12:14)

hrach
Člen | 1838
+
+1
-

@mystik mam v planu do SqlBuilderu pridat [1] metodu setOrder. Ktera nastavi order znovu. Pomohlo by to? Respektive bych nechtel moc zasahovat do aktualni api Selection. Diky metode getSqlBuilder by to melo stacit.

[1]: https://github.com/…lBuilder.php

mystik
Člen | 312
+
0
-

@hrach: V zásadě stačilo. Ale uvítal bych to i v rozhraní Selection – použití by pak bylo čistší než použít getSqlBuilder, který je internal.