Řazení dat v Gridu nefunguje na custom hodnoty

RePRO
Člen | 32
+
0
-

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 | 2632
+
0
-

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
+
0
-

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)

RePRO
Člen | 32
+
0
-

Nikdo netuší co s tím?

kalatalabnik
Člen | 35
+
0
-

Čus, co takto?
http://sqlfiddle.com/#…