diff --git a/frontend/controllers/CatalogController.php b/frontend/controllers/CatalogController.php index 5da6511..3ea70ef 100644 --- a/frontend/controllers/CatalogController.php +++ b/frontend/controllers/CatalogController.php @@ -120,14 +120,20 @@ class CatalogController extends \yii\web\Controller // Options if (($options = \Yii::$app->request->get('option')) != false) { - $query->innerJoin(ProductOption::tableName(), ProductOption::tableName() .'.product_id='. Product::tableName() .'.product_id'); - $query->innerJoin(TaxOption::tableName(), TaxOption::tableName() .'.tax_option_id='. ProductOption::tableName() .'.option_id'); - foreach($options as $group_alias => $option_alias) { +// $query->innerJoin(ProductOption::tableName(), ProductOption::tableName() .'.product_id='. Product::tableName() .'.product_id'); +// $query->innerJoin(TaxOption::tableName(), TaxOption::tableName() .'.tax_option_id='. ProductOption::tableName() .'.option_id'); + foreach($options as $group_alias => $options_alias) { + if (!is_array($options_alias)) { + $options_alias = [$options_alias]; + } + foreach($options_alias as &$option_alias) { + $option_alias = "'". $option_alias ."'"; + } $group = TaxGroup::find()->where(['like', 'alias', $group_alias])->one(); if (!$group) { continue; } - $query->andWhere([TaxOption::tableName() .'.tax_group_id' => $group->tax_group_id, TaxOption::tableName() .'.alias' => $option_alias]); + $query->andWhere(Product::tableName() .'.product_id IN (SELECT product_id FROM product_option INNER JOIN tax_option ON tax_option.tax_option_id = product_option.option_id WHERE tax_option.alias IN ('. implode(',', $options_alias) .'))'); } } diff --git a/frontend/views/catalog/products.php b/frontend/views/catalog/products.php index ff2e430..67bf373 100644 --- a/frontend/views/catalog/products.php +++ b/frontend/views/catalog/products.php @@ -186,6 +186,10 @@ $this->params['breadcrumbs'][] = $category->name;