ati*_*tif 4 zend-framework magento magento-1.4 magento-1.5
我创建了一个名为" by_item " 的自定义下拉属性,并添加了一些选项,如"套房,新娘,牛仔裤"等.
<?php // get all products
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*');
//filter codition
$collection->addFieldToFilter(array(
array('attribute'=>'by_item','eq'=>"Suite"),
));
foreach ($collection as $product) {
var_dump($product->getData());
}
?>
Run Code Online (Sandbox Code Playgroud)
它什么都没有:(
但是当我这样做时:
<?php
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*');
//filter codition
//$collection->addFieldToFilter(array(
// array('attribute'=>'by_item','eq'=>"Suite"),
// ));
foreach ($collection as $product) {
echo $product->getName() . "<br />";
}
?>
Run Code Online (Sandbox Code Playgroud)
它给了我所有产品的名称.我访问了很多文章,但没有遇到任何问题:(
这不起作用,因为您使用的是OR版本(嵌套数组)addFieldToFilter().
你想要的是AND版本.试试这个:
$collection = Mage::getModel('catalog/product')->getCollection();
->addAttributeToSelect('*')
->addFieldToFilter('by_item', array('eq' => 'Suite'));
foreach ($collection as $product) {
var_dump($product->debug());
}
Run Code Online (Sandbox Code Playgroud)
编辑
忽略了OP正在谈论"下拉"属性(不是文本字段).
当使用addFieldToFilter()"Dropdown"属性进行过滤时,必须使用选项的value/id,而不是选项的text/label.
例如,如果您的自定义下拉属性具有此选项
id text
12 Suite
13 Bridal
14 Jeans
Run Code Online (Sandbox Code Playgroud)
并且您希望按"套件"进行过滤,您可以这样编码:
$collection = Mage::getModel('catalog/product')->getCollection();
->addAttributeToSelect('*')
->addFieldToFilter('by_item', array('eq' => '12'));
Run Code Online (Sandbox Code Playgroud)
您也可以间接使用您的选项的文本/标签:
$collection = Mage::getModel('catalog/product')->getCollection();
->addAttributeToSelect('*')
->addFieldToFilter(
'by_item',
array(
'eq' => Mage::getResourceModel('catalog/product')
->getAttribute('by_item')
->getSource()
->getOptionId('Suite')
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8406 次 |
| 最近记录: |