Temukan atribut_id dengan atribut_kode

8

Saya perlu menemukan attribute_idnilai atribut image, small_imagedan thumbnail. Saya tahu mereka untuk database saya - 85, 86 dan 87, tetapi saya harus membuat kueri saya dinamis, bukan dengan nilai-nilai hard-coded. Yang saya perjuangkan adalah menemukan di tabel mana atribut disimpan. Saya memeriksa catalog_product_attributetetapi tidak ada kolom dengan name/codeatribut.

Saya perlu mendapatkannya sebagai query SQL, bukan sebagai Mage::...kode PHP. Contoh kode kueri SQL atau panduan lain akan sangat membantu.

Syspect
sumber

Jawaban:

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

jika $idada nullmaka atribut tidak ada.
Ini berfungsi sama untuk mendapatkan atribut kategori, atribut pelanggan dan atribut alamat pelanggan.

$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]
Sepertinya saya tidak bisa membaca. Saya melewatkan baris yang disebutkan sql query.
Berikut ini pertanyaannya:

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
sumber
Saya pergi dengan solusi yang lebih mudah:, SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND frontend_input = 'media_image'tetapi terima kasih telah menunjukkan kepada saya bahwa saya harus melihat di eav_attributetabel. :)
Syspect
2
Pendekatan Anda berisiko karena mungkin ada atribut lain dengan kode yang sama untuk entitas yang berbeda
Marius
1

Saya menggunakan kode ini untuk mendapatkan ID atribut di tabel 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
sumber
0

Singkat dan bermanfaat:

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