Attributsätze mit spezifischem Attribut
-
16-10-2019 - |
Frage
Wie kann ich eine Sammlung mit den Attributsätzen erhalten, die ein bestimmtes Attribut enthalten?
Ich möchte dazu in der Lage sein, dies aus einem einzelnen Sammlungspaziergang (auf einzelnen Auswahl) zu tun, um das Laden jedes Attributsatzes zu vermeiden und die Attribute im Inneren zu überprüfen.
Ich kenne diese Nähte wie Standard -Sachen, aber ich bin heutzutage ein bisschen langsam.
Lösung
$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');
Andere Tipps
Ich fand das kurz, bevor @MageUz die perfekte Antwort schrieb. Es ist schnell, wenn Sie nur die Attribut -Set -IDs benötigen. Vielleicht braucht es jemand anderes.
$attributeId = 123;
$setInfo = Mage::getResourceModel('eav/entity_attribute_set')
->getSetInfo(array($attributeId));
$attributeSetIds = array_keys($setInfo[$attributeId]);
Ich weiß nicht, wie ich es mit Magento -Objekten machen soll, aber eine direkte Frage würde genauso gut funktionieren, denke ich
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`
Sie können den folgenden Code verwenden, um das gesamte Attribut eines bestimmten Attributsatzes abzurufen.
$data = Mage::getResourceModel('catalog/product_attribute_collection')
->setAttributeSetFilter(9) // Add attribute set ID
->load();