Ребята подскажите как можно реализовать. Есть таблица продуктов (product), таблица свойств (product_property), таблица значений свойств (product_property_value). Связи в моделях настроены. Вывожу всё это дела в модели фильтра:
Код: Выделить всё
$query = Product::find()
->joinWith([
'productCategory',
'productPrice.priceType',
'photo',
'property',
'property.propertyName',
'property.propertyValue',
'product'])->distinct()
->where(['product_category.id' => $idCategory]);
и добавляю фильтры:
Код: Выделить всё
$query->andFilterWhere(['product_property_value.value' => $this->collection])
->andFilterWhere(['product_property_value.value' => $this->model])
->andFilterWhere(['product_property_value.value' => $this->color]);
Код: Выделить всё
<?php $form = ActiveForm::begin([
'method' => 'get',
]); ?>
<?php echo $form->field($model, 'collection')->label('Коллекция') ?>
<?php echo $form->field($model, 'model')->label('Модель') ?>
<?php echo $form->field($model, 'color')->label('Цвет') ?>
<div class="form-group">
<?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
Код: Выделить всё
SELECT COUNT(*)
FROM (
SELECT DISTINCT product.*
FROM product
LEFT JOIN product_category_matching ON product.id = product_category_matching.id_product
LEFT JOIN product_category ON product_category_matching.id_category = product_category.id
LEFT JOIN product_price ON product.id = product_price.id_product
LEFT JOIN price_type ON product_price.id_price_type = price_type.id
LEFT JOIN photo ON product.id = photo.id_product
LEFT JOIN product_property_matching ON product.id = product_property_matching.id_product
LEFT JOIN product_property ON product_property_matching.id_property = product_property.id
LEFT JOIN product_property_value ON product_property_matching.id_property_value = product_property_value.id
LEFT JOIN product sub_product ON product.article_site = sub_product.article_site
WHERE (product_category.id=3) AND (product_property_value.value='Лето') AND (product_property_value.value='Бейсболка') AND (product_property_value.value='Белый')) c