Encontre o attribute_id por attribute_code

8

Eu preciso encontrar os attribute_idvalores dos atributos image, small_imagee thumbnail. Eu os conheço para o meu banco de dados - 85, 86 e 87, mas preciso tornar minha consulta dinâmica, em vez de com valores codificados. O que luto é encontrar em qual tabela os atributos estão armazenados. Eu verifiquei, catalog_product_attributemas não há coluna com name/codeos atributos.

Eu preciso adquiri-los como uma consulta SQL, não como Mage::...código PHP. Um código de consulta SQL de amostra ou qualquer outra orientação será muito útil.

Syspect
fonte

Respostas:

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

se $idfor null, o atributo não existe.
Funciona da mesma maneira para obter atributos de categoria, atributos do cliente e atributos do endereço do 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');

[EDIT]
Aparentemente eu não sei ler. Eu perdi a linha que afirmava sql query.
Aqui está uma consulta também:

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
fonte
Fui com uma solução mais fácil:, SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND frontend_input = 'media_image'mas obrigado por me mostrar que tenho que procurar na eav_attributetabela. :)
Syspect
2
Sua abordagem é arriscada porque pode haver outro atributo com o mesmo código para uma entidade diferente
Marius
1

Eu usei esses códigos para obter o ID do atributo nas tabelas 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
fonte
0

Curto e útil:

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