Nepovinná podmínka ->where() v Nette\Database
- Dan Hundrt
- Člen | 74
Zdravím,
rád bych se zeptal, jak se obecně řeší následující. Mám v modelu metodu, která vrací pole s produkty:
$data = $this->database
->table('product')
->select('*')
->where(['public' => 1, 'category_id' => $category])
->limit($limit)
->fetchAll();
Potřeboval bych tam však dodat nepovinnou podmínku na filtrování cen:
$data = $this->database
...
->where(['price >' => $query['priceFrom'], 'price <' => $query['priceTo']])
...
Rád bych se zeptal, jak to co nejelegantněji předat podmínku, bez šíleného ifování. $query si předám v parametru meodoty, pokud není dostupná, vrací NULL.
Díky
Editoval Dan Hundrt (16. 7. 2018 23:49)
- ForestCZE
- Člen | 209
Dan Hundrt napsal(a):
Zdravím,
rád bych se zeptal, jak se obecně řeší následující. Mám v modelu metodu, která vrací pole s produkty:
$data = $this->database ->table('product') ->select('*') ->where(['public' => 1, 'category_id' => $category]) ->limit($limit) ->fetchAll();
Potřeboval bych tam však dodat nepovinnou podmínku na filtrování cen:
$data = $this->database ... ->where(['price >' => $query['priceFrom'], 'price <' => $query['priceTo']]) ...
Rád bych se zeptal, jak to co nejelegantněji předat podmínku, bez šíleného ifování. $query si předám v parametru meodoty, pokud není dostupná, vrací NULL.
Díky
Mimochodem, je nesmysl používat ->select(‚*‘)
Jednak není třeba tahat vše, když třeba se vším ani nepracuješ a za druhé si Nette samo zjistí, s čím pracuješ a to si za cachuje a pracuje jen s tím :)