Výpis z databáze – další ID v presenteru

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

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

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

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

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

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)

s4muel
Člen | 92
+
0
-

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

trisha
Člen | 20
+
0
-

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

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