如何检查属性值是否已分配给任何产品?我有一个产品属性A,其值为aa,bb,cc,dd,我想知道任何产品是否具有aa或bb或cc或dd属性值。
,即产品属性表中的count(aa)> 0
到目前为止我的代码
/*Get the Attributes for cat id 9 */
$layer = Mage::getModel("catalog/layer");
$layer->setCurrentCategory(Mage::getModel('catalog/category')->load(9));
$validAttributes = array();
foreach ($layer->getFilterableAttributes() as $attribute) {
//allow only select attributes - you can implement your additional filters here
if ($attribute->getFrontendInput() == 'select'){
$validAttributes[] = $attribute;
}
}
$i=0;
$name='';
/*Create the menu html in loop*/
foreach ($validAttributes as $attribute) {
$options = $attribute->getSource()->getAllOptions();
$attr=$attribute->getData();
$name = $attr['frontend_label'];
$temp.= '<li class=" nav-item level0 nav-1 level-top level-top first last nav-item--parent classic nav-item--only-subcategories parent">
<a href="#" class="level-top">
<span>'.$name.'</span>
<span class="caret"> </span>
</a>
<span class="opener"></span><ul class="level0 nav-submenu nav-panel--dropdown nav-panel" style="left: 44px; top: 40px; display: none;">';
foreach ($options as $option)
{
//Here I want to check count($option['value']) in product >0
$temp.='<li class="nav-item level1 nav-1-1 first last classic" >
<a href="'.$catUrl.'?'.$attr['attribute_code'].'='.$option['value'].'">
<span> '.$option['label'].'</span>
</a></li>';
}
$temp.= '</ul></li>';
$i++;
}
答案 0 :(得分:0)
使用此代码简单而有效
$prod_ids_array=Mage::getModel('catalog/product')->getCollection()
->addAttributeToFilter('custom_attribute_code',array('notnull' => true))
->getAllIds();
print_r($prod_ids_array);
您将获得具有属性值的产品ID。
答案 1 :(得分:0)
您可以通过运行SQL查询轻松获取它。
我想你有属性id = 74,属性类型是整数
如果是整数,那么数据将存储在catalog_product_entity_int
中select entity_id from catalog_product_entity_int where attribute_id = 73 and store_id = 0
所以现在你有了你正在寻找的ID列表。
答案 2 :(得分:0)
我知道我晚会晚了,但是这是一个查询,以防您想通过attribute_code搜索:
SELECT
cpe1.sku,
cpe1.value
FROM
catalog_product_entity_int cpei
LEFT JOIN eav_entity_attribute eav ON eav.entity_attribute_id = cpei.attribute_id
LEFT JOIN catalog_product_entity cpe1 ON cpe1.row_id = cpei.row_id
LEFT JOIN eav_attribute ea ON ea.attribute_id = cpei.attribute_id
WHERE
ea.attribute_code = "my_attribute_code"
AND cpe1.attribute_set_id IS NOT NULL;
这仅显示Integer属性“ catalog_product_entity_int”,还有其他表,具体取决于您的属性类型: