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,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,9 +213,10 @@ | ||
210 | $variant_query = ( new Query() )->distinct() | 213 | $variant_query = ( new Query() )->distinct() |
211 | ->select('product_variant.product_id as products') | 214 | ->select('product_variant.product_id as products') |
212 | ->from('product_variant'); | 215 | ->from('product_variant'); |
213 | - | 216 | + $variantSearch = false; |
214 | foreach ($params as $key=>$param){ | 217 | foreach ($params as $key=>$param){ |
215 | if(in_array($key, $productVariantOptions)){ | 218 | if(in_array($key, $productVariantOptions)){ |
219 | + $variantSearch = true; | ||
216 | unset($params[$key]); | 220 | unset($params[$key]); |
217 | $product_variant_id = ( new Query() )->distinct()->select('product_variant_option.product_variant_id as id') | 221 | $product_variant_id = ( new Query() )->distinct()->select('product_variant_option.product_variant_id as id') |
218 | ->from('product_variant_option') | 222 | ->from('product_variant_option') |
@@ -239,38 +243,47 @@ | @@ -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 |