Opencart — Выберите продукты со всеми выбранными атрибутами

Я использую OpenCart, и я сделал несколько фильтров в списке продуктов, где администратор может выбрать атрибуты продукта и отфильтровать продукты.

Сейчас я выбираю например. Ватт = 11 и Вольт = 240, это показывает 5 продуктов, которые имеют 11 ватт и 5 продуктов, которые имеют 240 вольт, 10 продуктов.

НО я хочу показывать только те продукты, которые имеют ОБА 11 Вт и 240 вольт.

Атрибуты в var_dump следующие:

array(3) { [0]=> array(2) { ["attribute_id"]=> string(2) "17" ["values"]=> string(4) "[11]" } [1]=> array(2) { ["attribute_id"]=> string(2) "18" ["values"]=> string(6) "[240]" }

Это код, который я использую
Соединение

if(!empty($data['filter_product_attributes'])) {
$sql .= " LEFT JOIN " . DB_PREFIX . "product_attribute pa ON (p.product_id = pa.product_id)";
}

Я добавляю все атрибуты в строку $ attribute_ids для разделения идентификаторов и в attribute_texts для разделения текстов и снизу используйте AND … IN

$sql .= " AND pa.attribute_id IN (".$attribute_ids.")";
$sql .= " AND pa.text IN (".$attribute_texts.")";

Я пробовал предложение HAVING ($ ids и $ texst являются массивами), но оно не работает должным образом:

$sql .= " HAVING";

$idc = 0;
foreach($ids as $id) {
if($idc == 0) {
$sql .= " sum(pa.attribute_id = ". $id .") > 0";
}
else {
$sql .= " and sum(pa.attribute_id = ". $id .") > 0 ";
}
$idc +=1;
}

$txc = 0;
foreach($texts as $text) {
$sql .= " and sum(pa.text = ". $text .") > 0";

}
}

Как я могу показать продукты, у которых выбраны ВСЕ атрибуты? Есть идеи?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]