如何获得包含特定属性的属性集的集合?
我希望能够从单个集合步行(在单个选择上)对此做到这一点,以避免加载每个属性集并检查内部的属性。
我知道这类似标准东西的接缝,但是这些天我有点慢。

有帮助吗?

解决方案

        $attributeId = 96;
        $collection  = Mage::getModel('eav/entity_attribute_set')
            ->getCollection()
            ->addFieldToFilter('eav_entity_attribute.attribute_id', $attributeId)
            ->addFieldToFilter('eav_entity_type.entity_type_code', Mage_Catalog_Model_Product::ENTITY)
            ->join(array('eav_entity_type'=> 'eav/entity_type'), 'eav_entity_type.entity_type_id=main_table.entity_type_id','entity_type_code')
            ->join(array('eav_entity_attribute'=> 'eav/entity_attribute'), 'eav_entity_attribute.attribute_set_id=main_table.attribute_set_id', 'attribute_id');

其他提示

我在@mageuz写了完美的答案之前就找到了这个。如果您仅需要属性设置ID,则很快。也许有人需要它。

$attributeId = 123;
$setInfo = Mage::getResourceModel('eav/entity_attribute_set')
        ->getSetInfo(array($attributeId));
$attributeSetIds = array_keys($setInfo[$attributeId]);

我不知道如何使用Magento对象进行操作,但是直接查询也可以正常工作

SELECT  `eav_entity_attribute`.`attribute_set_id` 
FROM  `eav_attribute` ,  `eav_entity_attribute` 
WHERE  `eav_attribute`.`attribute_code` =  'cost'
AND  `eav_attribute`.`attribute_id` =  `eav_entity_attribute`.`attribute_id` 

您可以使用以下代码获取特定属性集的所有属性。

 $data =   Mage::getResourceModel('catalog/product_attribute_collection')
        ->setAttributeSetFilter(9) // Add attribute set ID
        ->load();
许可以下: CC-BY-SA归因
scroll top