Suchen Sie die attribute_id nach attribute_code

8

Ich muss die attribute_idWerte der Attribute finden image, small_imageund thumbnail. Ich kenne sie für meine Datenbank - 85, 86 und 87, aber ich muss meine Abfrage dynamisch gestalten, anstatt mit fest codierten Werten. Ich habe Probleme damit, herauszufinden, in welcher Tabelle die Attribute gespeichert sind. Ich habe es überprüft, catalog_product_attributeaber es gibt keine Spalte mit name/codeden Attributen.

Ich muss sie als SQL-Abfrage erwerben, nicht als Mage::...PHP-Code. Ein Beispiel für einen SQL-Abfragecode oder eine andere Anleitung ist sehr hilfreich.

Syspect
quelle

Antworten:

17
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $attributeCode);
$id = $attribute->getId();

Wenn $idja, nulldann existiert das Attribut nicht.
Dies funktioniert genauso, wenn Kategorieattribute, Kundenattribute und Kundenadressattribute abgerufen werden.

$attribute = Mage::getModel('eav/config')->getAttribute('catalog_category', 'is_anchor');
$attribute = Mage::getModel('eav/config')->getAttribute('customer', 'gender');
$attribute = Mage::getModel('eav/config')->getAttribute('customer_address', 'postcode');

[EDIT]
Anscheinend kann ich nicht lesen. Ich habe die angegebene Zeile verpasst sql query.
Hier ist auch eine Abfrage:

SELECT 
    e.attribute_id 
FROM 
    eav_attribute e
LEFT JOIN
    eav_entity_type t 
ON e.entity_type_id = t.entity_type_id
WHERE 
    e.attribute_code = 'image' AND
    t.entity_type_code = 'catalog_product'
Marius
quelle
Ich habe SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND frontend_input = 'media_image'mich für eine einfachere Lösung entschieden:, aber danke, dass Sie mir gezeigt haben, dass ich in die eav_attributeTabelle schauen muss . :)
Syspect
2
Ihr Ansatz ist riskant, da es möglicherweise ein anderes Attribut mit demselben Code für eine andere Entität gibt
Marius
1

Ich habe diese Codes verwendet, um die Attribut-ID in eav_attribute- Tabellen abzurufen

$attribute_code = 'image';

$eavCollections = Mage::getModel('eav/entity_attribute')->getCollection()
                    ->addFieldToFilter('attribute_code', array('eq'=> $attribute_code ));

                foreach($eavCollections as $eavCollection){
                   $attribute_id = $eavCollection['attribute_id']; //get the attribute id
                   echo $attribute_id;
                }
Larp
quelle
0

Kurz und hilfreich:

Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product', 'color');
Deepanshu Jain
quelle