odpovídající záznamy v databázi v cyklu foreach

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
JanBE
Člen | 62
+
0
-

Zdravímn,

poradil by někdo, jak co nejjednodušeji vyřešit následující problém..

Potřebuji v šabloně procházet dny z databáze a pro každý den vypsat počet položek, které mají být provedeny. Jen nevím jak předat ID dnu do presenteru (SQL dotazu) aby se v druhém cyklu podle něj položky vypsaly..

šablona:

{foreach $days_for_all as $q}
         <tr >
              {foreach $items as $i}
                    <td>  {$i->name}</td>
              {/foreach}
         </tr>
  {/foreach}

presenter:

public function renderDefault()
 {
   $this->template->items = $this->database->table('items')->where('id_day',???) ;
   $this->template->days_for_all = $this->database->query('SELECT * from days');
 }
petr.jirous
Člen | 128
+
+1
-
{foreach $days_for_all as $q}
         <tr >
              {foreach $q->related('items') as $i}
                    <td>  {$i->name}</td>
              {/foreach}
         </tr>
  {/foreach}
JanBE
Člen | 62
+
0
-

Díky :-)

JanBE
Člen | 62
+
0
-

a pokud by {$i->name} bylo ID ve spojovací tabulce a potřeboval bych se dostat ještě dál (jako v left join) a vypsat název položky, je možné použít related znovu? Napadlo mě jen něco ve smyslu {$i->id->related(‚names‘)} ale takto mi to bohužel nefunguje..

Editoval JanBE (27. 2. 2015 10:58)

Pavel Kravčík
Člen | 1196
+
0
-

Ale to bys měl mít takhle $i->related('names'). Id bude jen položka v ActiveRow a ty to musíš volat na ActiveRow.

JanBE
Člen | 62
+
0
-

Super :-). a ještě poslední dotaz – proč nefunguje následující zápis:
$i->ref(‚day‘)->ref(‚class‘)->related(‚class_user‘)->ref(‚user‘)->name. Mám tak navrženou db a potřbuji vytáhnout jméno uživatele přes vazební tabulku..

Pavel Kravčík
Člen | 1196
+
0
-

To je strašidelné. :D

Jinak nikdy se neptej „proč nefunguje“, nikdo tady není kouzelník. Snaž se připojit chybu, co Ti to hází. A nejdřív si to zkus odkrokovat pomocí dump. To pomáhá. Zjistíš kam až Ti to probublá a většinou se pak ani nemusíš ptát.

Pavel Kravčík
Člen | 1196
+
0
-

Ale možná bude problém, že voláš ref na related.

Related vrací Selection a ne ActiveRow. Tudíž bys nad ním měl iterovat.