attribute_codeでattribute_idを検索します


8

私が見つける必要があるattribute_id属性の値をimagesmall_imagethumbnail。私はデータベース、85、86、87でそれらを知っていますが、ハードコードされた値ではなく、クエリを動的にする必要があります。私が苦労しているのは、属性が格納されているテーブルを見つけることです。チェックcatalog_product_attributeしましたname/codeが、属性の列がありません。

Mage::...PHPコードではなく、SQLクエリとして取得する必要があります。サンプルのSQLクエリコードまたはその他のガイダンスが非常に役立ちます。

回答:


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

場合$idnull、属性は存在しません。
カテゴリ属性、顧客属性、および顧客住所属性を取得する場合も同様に機能します。

$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
別のエンティティに対して同じコードを持つ他の属性が存在する可能性があるため、アプローチは危険です
マリウス

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.