Zjištění počtu vypsaných řádků

Webster.K
Člen | 192
+
0
-

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

@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)