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


8

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

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

Ответы:


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;
                }

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.