Autor Zpráva
exon
Profil *
Ahoj,
snažím se v nette poskládat dotaz na výběr z databáze. Problém je v tom, že nevím které parametry bude potřeba použít do podmínky WHERE. Mám metodu getProduct, která má tři nepovinné parametry (color, size, pattern).
public function getProduct($color = null, $size = null, $pattern = null){
     $products = $this->database->table('products')->where('id_product_type = 1 AND id_color = ? AND id_pattern = ? AND id_size = ?', $color, $pattern, $size)->fetchAll();
     //tady potrebuji podmínku WHERE upravit tak, aby pracovala i když bude zadaný jeden parametr (a ostatní null) nebo budou zadány dva (a zbylý null) atd...
}
Napadlo mě to celé opodmínkovat, ale přijde mi to jako nešťastné řešení. Napadá vás prosím nějaké lepší? Parametry nemusí být tři - můžu posílat i pole, ale problém je stejný.

Předem moc děkuji.
CZechBoY
Profil
Proč se ti nelíbí podmínka a co jinýho bys chtěl použít?
$productsSelection = $this->database->table('products')->where('id_product_type', 1);

if ($color) {
    $productsSelection->where('id_color', $color); // bere pole i integer
}

return $products = $productsSelection->fetchAll();
exon
Profil *
A jo takhle ... super! Diky moc.
Takto by to slo, ja jsem zacal vymyslet kombinovane podminky typu if($color and $size and $pattern) ... elseif(!$color and $size and $pattern) atd...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0