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.

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'

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;
                }

0

Court et utile:

Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product', 'color');
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.