Opencart - 选择具有所有选定属性的产品

时间:2016-05-26 14:40:47

标签: php mysql filter opencart having

我正在使用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中添加所有属性,分隔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 个答案:

没有答案