OR namísto AND mezi volánimi where

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

Následovně sestavuji SQL dotaz (který stejně nefunguje, protože se znak ` vkládá kam nemá):

//$params['filter'] je array obsahujici vycet hodnot, ale nemusi obsahovat nic
//$params['neco'] bud je nebo neni
$filter = array();

$key = array_search('neco', $params['filter']);
if ($key !== FALSE) {
	unset($params['neco'][$key]);
	$filter[] = "sloupec1=1";
}

foreach ($params['filter'] as $item) {
	$filter[] = "sloupec2='$item'";
}

$query->where(implode(' OR ', $filter));":null

Mohl bych udělat něco uplně jednoduchého jako:

$filter->where('sloupec1', 1);
$filter->where('sloupec2', array($params['filter']);

Ale to mi vloží AND, mezi volání where(), ale já potřebuji všude OR. Jak to řešit?

Editoval David Klouček (4. 4. 2014 18:41)

David Matějka
Moderator | 6445
+
0
-

pouzij parametry

->where('sloupec1 = ? OR sloupec2 = ?', array($val1, $val2))

Editoval matej21 (4. 4. 2014 18:43)

David Klouček
Člen | 57
+
0
-

Ale já nevim jestli budu volat ten první where, nebo druhej, nebo oba.

David Matějka
Moderator | 6445
+
0
-

si to sestav – jako to delas ted, jen tam dej ? pro parametry a do druheho pole si ukladej hodnoty parametru

David Klouček
Člen | 57
+
0
-

Tak sem na to asi přišel:

$query->where('sloupec1 ? OR sloupec2 ?', ($musiByt1 ? 1 : array(0, 1)), $params['filter']);

Díky za rady.

Editoval David Klouček (4. 4. 2014 19:14)