Tìm thuộc tính_id theo property_code


8

Tôi cần tìm các attribute_idgiá trị của các thuộc tính image, small_imagethumbnail. Tôi biết chúng cho cơ sở dữ liệu của mình - 85, 86 và 87, nhưng tôi cần làm cho truy vấn của mình động, thay vì với các giá trị được mã hóa cứng. Những gì tôi đấu tranh là để tìm trong đó các thuộc tính được lưu trữ trong bảng nào. Tôi đã kiểm tra catalog_product_attributenhưng không có cột nào với name/codecác thuộc tính.

Tôi cần phải có được chúng như một truy vấn SQL, không phải là Mage::...mã PHP. Mã truy vấn SQL mẫu hoặc bất kỳ hướng dẫn nào khác sẽ rất hữu ích.

Câu trả lời:


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

nếu $idnullthì thuộc tính không tồn tại.
Nó hoạt động tương tự để có được các thuộc tính danh mục, thuộc tính khách hàng và thuộc tính địa chỉ khách hàng.

$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]
Rõ ràng tôi không thể đọc được. Tôi đã bỏ lỡ dòng đã nêu sql query.
Đây cũng là một truy vấn:

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'

Tôi đã đi với một giải pháp dễ dàng hơn: SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND frontend_input = 'media_image'nhưng cảm ơn vì đã cho tôi thấy rằng tôi phải nhìn vào eav_attributebảng. :)
Syspect

2
Cách tiếp cận của bạn có rủi ro vì có thể có một thuộc tính khác có cùng mã cho một thực thể khác
Marius

1

Tôi đã sử dụng mã này để nhận ID thuộc tính trong các bảng eav_attribution

$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

Ngắn gọn và hữu ích:

Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product', 'color');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.