Commit e8d4c8fa4b8008bfce810a048eb920961566f407
1 parent
af4b9988
add variantSku
Showing
1 changed file
with
42 additions
and
29 deletions
Show diff stats
helpers/FilterHelper.php
| ... | ... | @@ -190,7 +190,10 @@ |
| 190 | 190 | |
| 191 | 191 | } |
| 192 | 192 | } |
| 193 | - self::filterOptions($params, $productVariantOptions, $query); | |
| 193 | + if(!empty($params)){ | |
| 194 | + self::filterOptions($params, $productVariantOptions, $query); | |
| 195 | + } | |
| 196 | + | |
| 194 | 197 | } |
| 195 | 198 | |
| 196 | 199 | |
| ... | ... | @@ -210,9 +213,10 @@ |
| 210 | 213 | $variant_query = ( new Query() )->distinct() |
| 211 | 214 | ->select('product_variant.product_id as products') |
| 212 | 215 | ->from('product_variant'); |
| 213 | - | |
| 216 | + $variantSearch = false; | |
| 214 | 217 | foreach ($params as $key=>$param){ |
| 215 | 218 | if(in_array($key, $productVariantOptions)){ |
| 219 | + $variantSearch = true; | |
| 216 | 220 | unset($params[$key]); |
| 217 | 221 | $product_variant_id = ( new Query() )->distinct()->select('product_variant_option.product_variant_id as id') |
| 218 | 222 | ->from('product_variant_option') |
| ... | ... | @@ -239,38 +243,47 @@ |
| 239 | 243 | |
| 240 | 244 | } |
| 241 | 245 | |
| 246 | + if($variantSearch){ | |
| 247 | + if($in_stock) { | |
| 248 | + $variant_query->andWhere(['!=', 'product_variant.stock', 0]); | |
| 249 | + } | |
| 250 | + | |
| 251 | + | |
| 252 | + $query->andWhere([ 'product.id' => $variant_query ]); | |
| 242 | 253 | |
| 243 | - if($in_stock) { | |
| 244 | - $variant_query->andWhere(['!=', 'product_variant.stock', 0]); | |
| 245 | 254 | } |
| 246 | - $product_query = ( new Query() )->distinct() | |
| 247 | - ->select('product_option.product_id as products') | |
| 248 | - ->from('product_option') | |
| 249 | - ->innerJoin( | |
| 250 | - 'tax_option', | |
| 251 | - 'tax_option.id = product_option.option_id' | |
| 252 | - ) | |
| 253 | - ->innerJoin( | |
| 254 | - 'tax_option_lang', | |
| 255 | - 'tax_option_lang.tax_option_id = tax_option.id' | |
| 256 | - ) | |
| 257 | - ->innerJoin( | |
| 258 | - 'tax_group', | |
| 259 | - 'tax_group.id = tax_option.tax_group_id' | |
| 260 | - ) | |
| 261 | - ->innerJoin( | |
| 262 | - 'tax_group_lang', | |
| 263 | - 'tax_group_lang.tax_group_id = tax_group.id' | |
| 264 | - ); | |
| 265 | - foreach ($params as $key=>$param){ | |
| 266 | - $product_query | |
| 267 | - ->where([ 'tax_group_lang.alias' => $key ]) | |
| 268 | - ->andWhere([ 'tax_option_lang.alias' => $param ]); | |
| 269 | 255 | |
| 256 | + | |
| 257 | + | |
| 258 | + if(!empty($params)) { | |
| 259 | + $product_query = ( new Query() )->distinct() | |
| 260 | + ->select('product_option.product_id as products') | |
| 261 | + ->from('product_option') | |
| 262 | + ->innerJoin( | |
| 263 | + 'tax_option', | |
| 264 | + 'tax_option.id = product_option.option_id' | |
| 265 | + ) | |
| 266 | + ->innerJoin( | |
| 267 | + 'tax_option_lang', | |
| 268 | + 'tax_option_lang.tax_option_id = tax_option.id' | |
| 269 | + ) | |
| 270 | + ->innerJoin( | |
| 271 | + 'tax_group', | |
| 272 | + 'tax_group.id = tax_option.tax_group_id' | |
| 273 | + ) | |
| 274 | + ->innerJoin( | |
| 275 | + 'tax_group_lang', | |
| 276 | + 'tax_group_lang.tax_group_id = tax_group.id' | |
| 277 | + ); | |
| 278 | + foreach ($params as $key=>$param){ | |
| 279 | + $product_query | |
| 280 | + ->where([ 'tax_group_lang.alias' => $key ]) | |
| 281 | + ->andWhere([ 'tax_option_lang.alias' => $param ]); | |
| 282 | + | |
| 283 | + } | |
| 284 | + $query->andWhere([ 'product.id' => $product_query ]); | |
| 270 | 285 | } |
| 271 | 286 | |
| 272 | - $query->andWhere([ 'product.id' => $product_query ]); | |
| 273 | - $query->andWhere([ 'product.id' => $variant_query ]); | |
| 274 | 287 | |
| 275 | 288 | } |
| 276 | 289 | ... | ... |