Найти идентификатор_ атрибута по коду атрибута

8

Мне нужно найти attribute_idзначение атрибутов image, small_imageи thumbnail. Я знаю их для своей базы данных - 85, 86 и 87, но мне нужно сделать мой запрос динамическим, а не с жестко заданными значениями. Я борюсь с тем, чтобы найти, в какой таблице хранятся атрибуты. Я проверил, catalog_product_attributeно нет столбца с name/codeатрибутами.

Мне нужно получить их как запрос SQL, а не как Mage::...код PHP. Пример кода SQL-запроса или любое другое руководство будет очень полезным.

Syspect
источник

Ответы:

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

если $idесть, nullто атрибут не существует.
Он работает так же для получения атрибутов категории, атрибутов клиента и атрибутов адреса клиента.

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

[РЕДАКТИРОВАТЬ]
Очевидно, я не могу читать. Я пропустил строчку, в которой говорилось sql query.
Вот запрос также:

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'
Мариус
источник
Я пошел с более простым решением: SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND frontend_input = 'media_image'но спасибо, что показал мне, что я должен смотреть в eav_attributeтаблицу. :)
Syspect
2
Ваш подход рискован, потому что может быть другой атрибут с тем же кодом для другой сущности
Marius
1

Я использовал эти коды для получения идентификатора атрибута в таблицах 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

Коротко и полезно:

Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product', 'color');
Дипаншу Джайн
источник