วิธีรับรายการคุณสมบัติทั้งหมด


23

ฉันจะดึงรายการ (อาร์เรย์) ของแอตทริบิวต์ผลิตภัณฑ์ที่กำหนดไว้ทั้งหมดได้อย่างไร (โดยทั่วไปฉันต้องการรหัสและฉลาก)

แก้ไข :

คุณลักษณะที่ฉันต้องการสิ่งนี้เพื่อสร้าง ACL แบบไดนามิกสำหรับคุณลักษณะของผลิตภัณฑ์ทั้งหมดที่มีอยู่ในร้าน (ทำงานกับโมดูลสำหรับซ่อนแอททริบิวต์และฟิลด์อื่น ๆ ในผลิตภัณฑ์แก้ไขแบ็กเอนด์ )


ไม่สนใจชุดคุณลักษณะ
benmarks

@ เครื่องหมาย: ใช่
อเล็กซ์

คำตอบ:


37

หากคุณต้องการ MySQL Query ลองที่:

select attribute_id, attribute_code, frontend_label from eav_attribute where entity_type_id IN (select entity_type_id from eav_entity_type where entity_type_code = 'catalog_product')

อีกทางเลือกหนึ่งสำหรับรหัส Fabian หากคุณต้องการสคริปต์ PHP ที่ใช้ Magento ลองทำสิ่งนี้:

$attributes = Mage::getResourceModel('catalog/product_attribute_collection')
    ->getItems();

foreach ($attributes as $attribute){
    echo $attribute->getAttributecode();
    echo '<br>';
    echo $attribute->getFrontendLabel();
}

ดี Mage_Catalog_Model_Resource_Product_Attribute_Collectionโดยพื้นฐานแล้วเฟเบียนพยายามทำสิ่งใด ขอบคุณ!
อเล็กซ์

ยินดีต้อนรับคุณ :-)
Sylvain Rayé

ฉันจะรับรายการคุณลักษณะโดยใช้รหัสกลุ่มได้อย่างไร ไม่ใช่ชุดคุณลักษณะ
Attila Naghi

5

//Mage_Eav_Model_Mysql4_Entity_Attribute_Collection
Mage::getResourceModel('eav/entity_attribute_collection')->setEntityTypeFilter(Mage_Catalog_Model_Product::ENTITY);

ควรทำ.

เราเพิ่งพบข้อผิดพลาดคุณต้องผ่าน entity_type_id:

$col = Mage::getResourceModel('eav/entity_attribute_collection')->setEntityTypeFilter(4);

ทำ

รหัสคือเอกสาร:

if ($type instanceof Mage_Eav_Model_Entity_Type) {
        $additionalTable = $type->getAdditionalAttributeTable();
        $id = $type->getId();
    } else {
        $additionalTable = $this->getResource()->getAdditionalAttributeTable($type);
        $id = $type;
    }

หวังว่าโซลูชันการทำงาน (อัปเดตโดยความคิดเห็น @Alex)

คุณต้องผ่านMage_Eav_Model_Entity_Typeเพื่อให้สิ่งนี้ทำงานได้และไม่ hardcoded:

$type = Mage::getModel('eav/entity_type')->loadByCode(Mage_Catalog_Model_Product::ENTITY)
Mage::getResourceModel('eav/entity_attribute_collection')->setEntityTypeFilter($type);

คอลเลกชันส่งกลับจำนวน 0 ... ฉันจำได้ว่ามี API หรือคลาสบริการบางอย่างสำหรับเรื่องนี้ แต่หา ATM ไม่พบ
อเล็กซ์

ยอดเยี่ยม - แต่ 4 คือฮาร์ดโค้ด (แม้ว่าจะไม่มีการเปลี่ยนแปลงเลย) แก้ไขเพื่อ upvote :-)
Alex

และไม่บรรทัดแรกไม่ทำงาน Mage_Catalog_Model_Product :: ENTITY เป็นสตริงไม่ใช่ Mage_Eav_Model_Entity_Type
Alex

ฉันคิดว่าฉันได้รับแล้ว: D
Fabian Blechschmidt

แต่ฉันก็มาสาย ฉันจะทำเมื่อฉันผ่านตัวแทน 2k: p
Fabian Blechschmidt

2

นี่คือการรับคุณลักษณะทั้งหมด

SELECT
    eav_attribute_option_value.option_id,
    eav_attribute_option_value.`value`,
    eav_attribute_option.attribute_id
                FROM
                        eav_attribute_option_value
                INNER JOIN eav_attribute_option ON eav_attribute_option_value.option_id = eav_attribute_option.option_id
                WHERE
                        eav_attribute_option.attribute_id = 135
                OR eav_attribute_option.attribute_id = 142 
                -- 135 = BRANDS
                -- 142 = TYPES
                GROUP BY
                        eav_attribute_option_value.option_id
                ORDER BY
                eav_attribute_option_value.`value` ASC

ไม่ต้องการใช้ SQL ธรรมดา ...
Alex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.