Trova il nome_attributo per codice_attributo


8

Ho bisogno di trovare i attribute_idvalori degli attributi image, small_imagee thumbnail. Li conosco per il mio database - 85, 86 e 87, ma devo rendere dinamica la mia query, invece che con valori hardcoded. Quello che faccio fatica a trovare in quale tabella sono memorizzati gli attributi. Ho controllato catalog_product_attributema non esiste una colonna con name/codegli attributi.

Devo acquisirli come una query SQL, non come Mage::...codice PHP. Un esempio di codice di query SQL o qualsiasi altra guida sarà molto utile.

Risposte:


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

se $idè nullallora l'attributo non esiste.
Funziona allo stesso modo per ottenere attributi di categoria, attributi del cliente e attributi dell'indirizzo del 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]
Apparentemente non riesco a leggere. Ho perso la linea che ha dichiarato sql query.
Ecco una query anche:

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'

Sono andato con una soluzione più semplice:, SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND frontend_input = 'media_image'ma grazie per avermi mostrato che devo guardare in eav_attributetabella. :)
Syspect,

2
Il tuo approccio è rischioso perché potrebbe esserci un altro attributo con lo stesso codice per un'entità diversa
Marius

1

Ho usato questi codici per ottenere l'ID attributo nelle tabelle 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

Breve e utile:

Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product', 'color');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.