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
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
pouzij parametry
->where('sloupec1 = ? OR sloupec2 = ?', array($val1, $val2))
Editoval matej21 (4. 4. 2014 18:43)
- David Matějka
- Moderator | 6445
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
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)