我想要某个制造商的所有产品,让我们说“Nike”(用户可以在这里输入一个字符串)。但是在使用时:
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToFilter('manufacturer', 'Nike');
它不起作用,因为预计制造商ID不是“Nike”。有没有一种简单的方法可以从名称中获取id,或者有一种方法可以过滤只有名称而不是id?
答案 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);