通过attribute_code查找attribute_id


8

我需要找到attribute_id的属性值imagesmall_imagethumbnail。我知道它们对于我的数据库-85、86和87,但是我需要使查询动态化,而不是使用硬编码的值。我遇到的困难是查找属性存储在哪个表中。我检查了,catalog_product_attribute但没有包含name/code属性的列。

我需要将它们作为SQL查询而不是Mage::...PHP代码来获取。示例SQL查询代码或任何其他指南将非常有帮助。

Answers:


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 2014年

2
您的方法存在风险,因为对于其他实体,可能会有另一个具有相同代码的属性
Marius

1

我使用此代码来获取eav_attribute表中的属性ID

$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');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.