detekce prvního/posledního cyklu foreach v presenteru
- Webster.K
- Člen | 212
Zdravím všechny, už nějakou dobu řeším jeden problém, který se týká foreach a detekci prvního/posledního průchodu. Zkusím přesně objasnit co mi nefunguje:
Mám v presenteru kod na získání dat z databaze:
$rows = $this->database->query("SELECT date, count(id) as pocet, name FROM tableName GROUP BY name, datum ORDER BY datum, id ASC");
A hned za ním:
foreach ($rows as $value) {
//obsah cyklu
}
Můj problém je ale v tom, že nejsem schopen detekovat, poslední průchod polem… napadlo mě udělat něco jako
$pocet = count($rows);
a dát to před foreach a ale v proměnný $pocet mám vždy 1 i když foreach jede treba 10×. Existuje v nette na to nějaká funkce? Nebo cokoliv? Našel jsem pro latte šablonu isFirst/isLast, ale tím to končí. Dokázal by mi někdo poradit?
- Oli
- Člen | 1215
Být tebou, naučil bych se používat nette database table,
je to mnohem příjemnější než psát SQL dotazy. Nicméně, query vrací
ResultSet
a ten má metodu GetRowCount
a to je asi to co chceš.
- CZechBoY
- Člen | 3608
Můžeš použít třeba Nette\Iterators\CachingIterator
https://api.nette.org/…terator.html,
který má metody isLast(), isFirst().