Řazení dat v Gridu nefunguje na custom hodnoty
- RePRO
- Člen | 32
Zdravíčko,
používám Grido a potřebuji sloupeček řadit, jenže mi přijde, že to reaguje pouze na hodnoty z databáze. Máme něco takového, ale dle tohoto řadit nelze:
<?php
$grid->addColumnText("MessageCount", "Počet zpráv")
->setSortable()
->setColumn(function($mg) {
return count($mg->messages);
});
?>
Nějaké nápady, jak elegantně v tomhle kontextu řadit? Řešil jste někdy něco podobného? Díky :)
- Šaman
- Člen | 2666
Já si pro Grido u složitějších pohledů nakonec psal vlastní dotazy
(případně vytvořil VIEW tabulky). V tom tvém případě by si Grido muselo
vytvořit všechny řádky, nad nimi provést spočítání počtu zpráv a to
celé pak teprve řadit (limitovat, vybírat podle počtu).
Když Gridu předpřipravíš datasource ve kterém si necháš ty počty
spočítat databázi, tak Grido si k němu pak jen přidá limitní, sortovací
apod. podmínky a na jeden dotaz vrátí rovnou relevantní výsledky.
Editoval Šaman (11. 10. 2017 0:13)
- RePRO
- Člen | 32
Chápu, jak to myslíš, ale jak mám připravit dotaz (zdroj), aby pro každý řádek to počítalo počet hodnot v jiné tabulce. Pro lepší pochopení řeším 1:N počet. Zdroj bude fungovat pro celkovou kolekci, pokud tam dáme SUM/COUNT, ale jak pro jednotlivé? Například:
Tabulka user
ID 1 (3)
ID 2 (2)
Tabulka item
1 aaa
1 bbb
1 ccc
2 aaa
2 bbb
Čísla v závorkách jsou ty čísla, které potřebuji do Grida dostat a aby to dle toho řadilo.
Editoval RePRO (11. 10. 2017 0:40)