Vyhladavnie v DB podla len niektorych where

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

Robim vyhladavanie v DB podla zadanych udajov z Formy, keby ich nebolo vela tak by som aj manualne napisal vsetky moznosti ale policok je asi 20 a to by bolo vela moznosti.
Da sa nejako priamo v

$this->template->search = $this->context->createReality()->where(array('Mesto'=>$Mesto, 'Ulica'=>$Ulica));

spravit aby zobralo len udaje ktore dostane a ostatne ignorovalo? Lebo ak pridam do Mesto mesto a do Ulica dam NULL, tak mi samozrejme nic v DB nenajde, kedze hlada kombinaciu mesto a NULL.
Alebo ak je lepsi sposob ako vyhladavat v DB tak mi prosim poradte.

Sator
Člen | 15
+
0
-

Tak uz nic, napisal som si vlastny vyhladavac.

Ale narazil som pri nom na iny problem, je mi jasne ako ziskat z tabulky data, ktore sa rovnaju niecomu, najst min/max a podobne, ale nikde nevidim ako zobrat vsetky vacsie/mensie ako urcita hodnota, ci zas mi mam pisat aj na to funkciu, nieje jednoduchy prikaz na to?

duke
Člen | 650
+
0
-

Odpovědi na všechny položené otázky nalezneš „překvapivě“ v dokumentaci.

Sator
Člen | 15
+
0
-

Dikes, pozrel znovu a nasiel som odpoved na svoju druhu otazku a po nejakom trial error mi to aj funguje, ale na tu prvu otazku to stale nevidim, asi som slepy.

duke
Člen | 650
+
0
-

Metodu where můžeš volat vícekrát a tak postupně přidávat kriteria vyhledávání:

$search = $this->context->createReality();
foreach ($criteria as $key => $value) {
	if ($value !== NULL) {
		$search->where($key, $value);
	}
}

Případně si můžeš asociativní pole, které where předáváš předpřipravit (vyfiltrovat položky s NULL atp.):

$search = $this->context->createReality()->where(array_filter($criteria, function ($value) {
	return $value !== NULL;
}));