Zobrazit výpis databazy na stránke

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

Caute,
Mám problém so zobrazením výsledku QUERY v latte, predpokladam že robím nejakú hlúpu chybu alebo len možno rozmýšlam nesprávnym spôsobom. Skúsim všetko spísať v bodoch aby som bol čo najpresnejší a bolo to najprehladnejsie. Dúfam, že niekto z vás mi bude vedieť poradiť

Ako by to malo fungovať:
Mám nejaký relatívne obsiahly formulár, po jeho odoslaní by sa na základe hodnôt z formulára malo zavolať QUERY do DB, ktoré vráti výlsedky. Inak povedané klasické hľadanie ako vidíte všade :)

Čo mám napísané:
Kopírovať zadanie formuláru ci latte je asi zbytočné takže skopírujem len posledne 2 riadky a následne ako to vyzerá po jeho odoslaní.

$form->onSuccess[] = array($this, 'searchFormSucceeded');
return $form
public function searchFormSucceeded(Nette\Application\UI\Form $form, $values)
{
    $this->flashMessage('Ďakujeme, výsledky pre vaše hľadanie sú.');
    $this->template->candidates = $this->search->findCandidates($values);
}

Následne to vyzerá v modely takto (kedze mi to nešlo skúsil som len jednoduché QUERY):

	function findCandidates($searchParams)
	{
		return $this->db->query("
		SELECT *
			FROM candidates as c
			WHERE firstname = 'Dante'
		");
	}

Čo som zamýšlal:
Moja myšlienka bola celkom jednoduchá a pravdepodobne aj zlá, chcel som vyhľadať výsledky a priradiť ich rovno do premennej candidates aby som to mohol vypísať v latte.

Keď však dumpnem candidates v latte mám to prázne. Skúšal som rovnako DUMP priamo v presentri, tvári sa to, že query prejde no nepriradi to do premmennej.

DUMP vyzera takto:

{dump $candidates}


Nette\Database\ResultSet #45e2
connection private => Nette\Database\Connection #ff4a
supplementalDriver private => Nette\Database\Drivers\MySqlDriver #bb86
connection private => Nette\Database\Connection #ff4a
pdoStatement private => PDOStatement #30bd
queryString => "
		SELECT *
			FROM candidates as c
			WHERE firstname = 'Dante'
		" (71)
result private => NULL
resultKey private => -1
results private => NULL
time private => 0.002000093460083
queryString private => "
		SELECT *
			FROM candidates as c
			WHERE firstname = 'Dante'
		" (71)
params private => array ()
types private => NULL

Nakoľko ma napadlo, že chyba môže byť v tom, že hold v DB tieto data nie sú, skúsil som toto query skopírovať rovno do PHPMYADMINA kde mi to vrátilo 3 riadky výsledkov.

p.s.Ladenka mi píše že prebhlo query a našlo 3 rows, čo je v poriadku. Otázka teda znie, zapisal som to zle do presentru? Ako by som mal výsledky tohto query dostat do šablony?

Viete mi niekto poradiť čo robím zle?
Diky

Editoval Andurit (19. 11. 2015 12:08)

Andurit
Člen | 131
+
0
-

Vedel by mi s tým prosím niekto poradiť?

Šaman
Člen | 2666
+
+1
-

Musíš ten výsledek buď proiterovat (foreachem), nebo použít ->fetchAll().

Andurit
Člen | 131
+
0
-

Ide to, ďakujem.
Sice nerozumiem prečo mi DUMP nevrátil aspon nejaký objekt alebo pole všetkých premenných ale základ je tá funkčnosť

Diky

F.Vesely
Člen | 369
+
0
-

Protoze je to lazy a dotaz se poklada, az kdyz je opravdu potreba.