odpovídající záznamy v databázi v cyklu foreach
- JanBE
- Člen | 62
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
{foreach $days_for_all as $q}
<tr >
{foreach $q->related('items') as $i}
<td> {$i->name}</td>
{/foreach}
</tr>
{/foreach}
- JanBE
- Člen | 62
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
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.
- Pavel Kravčík
- Člen | 1196
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
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.