Zjištění počtu vypsaných řádků
- Webster.K
- Člen | 212
Zdravím všechny, už chvilku se lámu na zjištění počtu vypsaných řádků z databáze. v Presenteru ve funkcni defaultRender() vypisuji obsah tabulky a předávám do šablony tímto kodem:
$this->template->vouchery = $this->database->table("voucher");
a následně v latte vypisuji:
{foreach $vouchery as $voucher}
<tr>
<td>{$voucher->kod_voucheru}</td>
<td>{$voucher->datum_vystaveni->format('j.n.Y')}</td>
<td>{$voucher->datum_platnosti->format('j.n.Y')}</td>
<td>{$voucher->typ_sluzby}</td>
<td>
{foreach $voucher->related('voucher_body') as $body}
{$body->getRowCount()}
{/foreach}
</td>
<td></td>
</tr>
{/foreach}
problém je, že když ve vnořeném cyklu dám $body->nazev_sloupecku, hodnoty to normálně vypíše (relace mezi tabulkami nastaveny a data dostavam v pohode), ale vůbec netuším, jak vrátit jen počet řádků. Takto mi to končí jen chybou Call to undefined method Nette\Database\Table\ActiveRow::getRowCount(). Jinak používám poslední Nette (instalace pres composer), PHP 8.0
- m.brecher
- Generous Backer | 873
@WebsterK
Použij metodu count() nad GroupedSelection objektem (reprezentuje sadu řádků), který vrací metoda related(). Viz dokumentace: https://doc.nette.org/…ase/explorer#… .
V kódu voláš metodu getRowCount() nad jedním řádkem (objekt ActiveRow), tato metoda v třídě ActiveRow není (viz výjimka). Tato metoda je v jiné části knihovny – v Nette Core Database v třídě ResultSet – viz dokumentace https://doc.nette.org/…atabase/core#… .
{foreach $vouchery as $voucher}
<tr>
<td>{$voucher->kod_voucheru}</td>
<td>{$voucher->datum_vystaveni->format('j.n.Y')}</td>
<td>{$voucher->datum_platnosti->format('j.n.Y')}</td>
<td>{$voucher->typ_sluzby}</td>
<td>
{var $voucherBody = $voucher->related('voucher_body')} {* objekt GroupedSelection *}
{foreach $voucherBody as $body}
{$body->column} {* objekt ActiveRow *}
{/foreach}
{$voucherBody->count('*')} {* počet řádků zde *}
</td>
<td></td>
</tr>
{/foreach}
Editoval m.brecher (4. 6. 2023 16:50)