Trouver l'attribut_id par attribute_code

8

J'ai besoin de trouver les attribute_idvaleurs des attributs image, small_imageet thumbnail. Je les connais pour ma base de données - 85, 86 et 87, mais j'ai besoin de rendre ma requête dynamique, plutôt qu'avec des valeurs codées en dur. Ce avec quoi je lutte, c'est de trouver dans quelle table les attributs sont stockés. J'ai vérifié catalog_product_attributemais il n'y a pas de colonne avec name/codeles attributs.

J'ai besoin de les acquérir en tant que requête SQL, pas en tant que Mage::...code PHP. Un exemple de code de requête SQL ou tout autre guide sera très utile.

Syspect
la source

Réponses:

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

si $idest nullalors l'attribut n'existe pas.
Il en va de même pour obtenir les attributs de catégorie, les attributs client et les attributs d'adresse client.

$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]
Apparemment, je ne peux pas lire. J'ai raté la ligne qui a déclaré sql query.
Voici également une requête:

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
la source
Je suis allé avec une solution plus simple:, SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND frontend_input = 'media_image'mais merci de me montrer que je dois regarder dans le eav_attributetableau. :)
Syspect
2
Votre approche est risquée car il pourrait y avoir un autre attribut avec le même code pour une entité différente
Marius
1

J'ai utilisé ces codes pour obtenir l'ID d'attribut dans les tables eav_attribute

$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;
                }
GN
la source
0

Court et utile:

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