Domanda

Come posso ottenere una collezione con i set di attributi che contengono un determinato attributo?
Voglio essere in grado di fare questo da un'unica passeggiata di raccolta (in selezione singola), per evitare di caricare ogni set di attributi e la verifica degli attributi all'interno.
So che questo cuciture come roba standard, ma io sono un po 'lento in questi giorni.

È stato utile?

Soluzione

        $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');

Altri suggerimenti

Ho trovato questo proprio prima @mageUz ha scritto la risposta perfetta. E 'veloce se avete bisogno solo gli ID set di attributi. Forse qualcun altro ne ha bisogno.

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

I don't know how to do it with Magento objects but a direct query would work just as well I guess

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` 

You can use below code to get all attribute of particular attribute set.

 $data =   Mage::getResourceModel('catalog/product_attribute_collection')
        ->setAttributeSetFilter(9) // Add attribute set ID
        ->load();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top