Magento addAttributeToFilter,按属性文本过滤

时间:2014-08-01 13:41:59

标签: php magento attributes

我想要某个制造商的所有产品,让我们说“Nike”(用户可以在这里输入一个字符串)。但是在使用时:

    $products = Mage::getModel('catalog/product')
        ->getCollection()
        ->addAttributeToFilter('manufacturer', 'Nike');

它不起作用,因为预计制造商ID不是“Nike”。有没有一种简单的方法可以从名称中获取id,或者有一种方法可以过滤只有名称而不是id?

2 个答案:

答案 0 :(得分:3)

首先按标签获取id,然后执行addField以过滤集合

$productModel = Mage::getModel('catalog/product');
$attr = $productModel->getResource()->getAttribute("manufacturer");
if ($attr->usesSource()) {

     $manufacturer_id = $attr->getSource()->getOptionId("Nike");
}

$products = Mage::getModel('catalog/product')
        ->getCollection()
        ->addAttributeToFilter('manufacturer',$manufacturer_id);

答案 1 :(得分:1)

是的,您必须先获取attribute id,然后使用过滤器

$productModel = Mage::getModel('catalog/product');
$attr = $productModel->getResource()->getAttribute("manufacturer");
if ($attr->usesSource()) {
    $attr_id = $attr->getSource()->getOptionId("Nike"); // your_attribute_label
}
$products = $products = Mage::getModel('catalog/product')
        ->getCollection()
        ->addAttributeToFilter('manufacturer', $attr_id)->getData();
echo "<pre>";print_r($products);