Jak otestovat prázdný výsledek dotazu do db?

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

Ahoj, mám v presenteru:
$this->template->mesto = $this->database->table(‚mesta‘);
a výsledek dotazu pak vypisuji v šabloně. Pokud je výsledkem dotazu 1 a více řádků je to v pohodě. Ale pokud se vrátí prázdný výsledek, napíše mi to chybu. Poradíte mi jak otestovat zda je výsledek prázdný? Mělo by se to dělat ještě v presenteru nebo až v šabloně při výpise?

Děkuji

Aurielle
Člen | 1281
+
+1
-

Třeba přes count().

CZechBoY
Člen | 3608
+
+1
-

čau,
pokud potřebuješ jen jeden řádek tak fetch() vrací false.

charlie.v
Člen | 20
+
0
-

Děkuji, tohle mi funguje!

vymak
Člen | 92
+
0
-

Ve svých projektech to řeším takhle

Presenter:

$this->template->mesto = $this->database->table('mesta')->fetchAll();

Šablona:

{if $mesto}
 // nějaký výpis v případě že proměnná není prázdná
{else}
 Nebyly nalezeny žádná města
{/if}

V případě že mám nějakou akci, která zobrazuje již konkrétní detail řeším to přímo v presenteru

Presenter:

	private $model;

	public function actionDetail($id) {
		$model = $this->database->table('tabulka')->get($id);
		if (!$model) {
			throw new \Nette\Application\BadRequestException;
		}

		$this->model = $model;
	}

	public function renderDetail() {
		$this->template->model = $this->model;
	}

V šabloně už potom nemusíš testovat nic, protože víš že v modelu něco je. Nevím jestli je to best-practice ale já to tak používám :)

Editoval vymak (7. 9. 2014 21:21)