Výpis z databáze – další ID v presenteru
- trisha
- Člen | 20
Zdravím,
mám takovej seznam otázek. Vypadá takhle
Když tam vypisuju ty otázky, tak používám aktuální ID soutěže. Takže mám něco a k tomu otázky.
<?php
public function renderOtazky($id)
{
$this->template->otazky = OtazkyModel::vypisOtazky($id);
}
?>
Jak ale dostanu zpátky do modelu ID jednotlivých otázek, abych tam k nim mohl vypsat i odpovědi? Dík
Vím jak to udělat jednotlivě, zase poslat parametr, ale to by byla jen ta otázka sama. Já to chci všechno hezky v jednom.
Editoval trisha (8. 8. 2013 13:17)
- vitush93
- Člen | 33
zde te nejspis zajima prace s databazi – relacemi. Pro kazdou otazku dohledat odpovedi. Bud to muzes udelat mysql joinem nebo vicero query tak, jak je popsano v dokumentaci.
- s4muel
- Člen | 92
ten link od vitush93 by ti mohol pomoct. v skratke by malo stacit pridat do latte sablony nieco nasledovne.
{foreach $otazky->related('odpoved') as $odpoved}
{$odpoved->text_odpovede}
{/foreach}
predpokladom je dobre navrhnuta databaza (InnoDB tabulky previazane cez foreign keys)
- trisha
- Člen | 20
Já i vím jak to pak vypsat s joinem. Jen mi jde o to, jak dostanu to konkrétní ID otázky zpátky do modelu. v templatu si ho vypíšu k otázce například do name? a pak ho nějak vezmu? Nebo jak. Nejde mi o samotné vypsání, jako o to, jak dostanu to ID otázky někam, kde s ním budu moci pracovat.
Bude to asi největší kravina, ale tohle mi pořád neni jasný.
Editoval trisha (9. 8. 2013 15:25)
- Badaboom
- Člen | 33
Ty ti snad vrací OtazkyModel::vypisOtazky($id), ne?
Nevím čeho přesně chceš docílit. Jestli chceš mít pod všemi otázkami odpovědi, pak bys měl z databáze tahat oboje najednou.
Pokud chceš pouze jednu otázku a k ní odpovědi, musíš vytvořit jiný view – renderOtazku($id). ID té otázky si předáš v odkazu.
Editoval Badaboom (9. 8. 2013 19:41)
- trisha
- Člen | 20
s4muel napsal(a):
@trisha: pisal si, ze vypisat otazky aj s ich odpovedami vies, skus teda napisat, co presne chces docielit – kde a na co potrebujes to ID odpovede? mozno aspon nejaky user-workflow.
Uplně jednoduše. Mám teda
<?php
$this->template->otazky = OtazkyModel::vypisOtazky($id);
$this->template->odpovedi = OdpovediModel::vypisOdpovedi($id_otazky?);
?>
Takhle vypíšu všechny otázky. Vypíšu i tak všechny odpovědi. Ale jak přiřadím id k těm otázkám, aby se odpovědi zobrazovali vždycky pro tu danou otázku. Přece někde musí být nějaký where id_otazky = neco, ne? Resp. jak dostanu $id_otazky do modelu pro vypsaní odpovědi k dané otázce?
Nebo to jde nějak řešit už tom presenteru?
Editoval trisha (15. 8. 2013 15:24)
- HappyFace
- Člen | 162
@s4muel ty to uz hore ukazal .. proste to ide cez relace, cize:
#presenter bude obsahovat
$this->template->otazky = OtazkyModel::vypisOtazky();
#sablona bude mat nasledujuci tvar
{foreach $otazky as $otazka}
{$otazka->text_otazky}
Moznosti:
{foreach $otazka->related('odpoved') as $odpoved}
{$odpoved->text_odpovede}
{/foreach}
{/foreach}
je to spomenute v kucharke viac menej je tam presne priklad toho co potrebujes ;)
Editoval HappyFace (15. 8. 2013 15:54)