获取只有子类别包含产品的类别的类别计数

时间:2013-10-19 20:37:43

标签: php mysql magento

我在计算类别集合时遇到问题,该类别集合将包括任何类别的儿童产品。

但是,我不想只是一个完整的计数我希望通过产品集合过滤该计数(因此只包括产品集合中出现的计数中的产品)......

有什么建议吗?

获取过滤产品集合的代码(按多选属性过滤)

    /** @var $attribute Mage_Eav_Model_Entity_Attribute */
    $valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
    ->setAttributeFilter($attribute->getId())
    ->addFieldToFilter('value', array ('like' => $make))
    ->addFieldToSelect('option_id')
    ->setStoreFilter(0, false);


$set = array();
foreach($valuesCollection as $option){
    $set[] = $option->getData('option_id');
}

$_productCollection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('sparex_makemodel',
        array('in' => $set
        )
)
->addAttributeToSelect('*');

我正在获取给定类别的子类别,如此...

$childCats = Mage::getModel('catalog/category')->load(2)->getChildrenCategories();

现在这些类别都没有分配给他们的产品,但是他们的孩子(或孩子的孩子)会这样做。

我想为这些类别生成一个包含子类别的计数,但仅限于我的过滤集合中的产品。

1 个答案:

答案 0 :(得分:0)

也许是这样的?

$counter = 0;
foreach($_productCollection as $_prod) {
    $categories = $_prod->getCategoryIds();
    foreach($childCats as $_cat) {
        if (in_array($_cat->getId(), $categories)) {
            $counter++;
        }
    }
}