Encuentra el atributo_id por atributo_código

8

Necesito encontrar los attribute_idvalores de los atributos image, small_imagey thumbnail. Los conozco para mi base de datos: 85, 86 y 87, pero necesito hacer que mi consulta sea dinámica, en lugar de con valores codificados. Lo que me cuesta es encontrar en qué tabla se almacenan los atributos. Lo comprobé catalog_product_attributepero no hay una columna con name/codelos atributos.

Necesito adquirirlos como una consulta SQL, no como Mage::...código PHP. Un código de consulta SQL de muestra o cualquier otra guía será muy útil.

Syspect
fuente

Respuestas:

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

si $ides nullentonces el atributo no existe.
Funciona igual para obtener atributos de categoría, atributos de cliente y atributos de dirección de cliente.

$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');

[EDITAR]
Aparentemente no puedo leer. Me perdí la línea que decía sql query.
Aquí hay una consulta también:

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
fuente
Fui con una solución más fácil: SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND frontend_input = 'media_image'pero gracias por mostrarme que tengo que buscar en la eav_attributetabla. :)
Syspect
2
Su enfoque es arriesgado porque podría haber otro atributo con el mismo código para una entidad diferente
Marius
1

Usé estos códigos para obtener el ID de atributo en las tablas 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;
                }
larp
fuente
0

Corto y útil:

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