回答:
静的属性は、エンティティのメインテーブルに格納されている属性です-カタログ製品用catalog_product_entity
。たとえばsku
、カタログ製品の属性はとして定義されstatic
ます。静的属性は常にMagentoによってロードされ、特に情報をすばやく取得したり、データの検索を最適化したい場合に役立ちます。このタイプの属性の欠点は、ストア固有の値を使用できないことです。これは、Magento EAVシステムの利点の1つです。
属性をとして定義した場合でもstatic
、メインエンティティテーブルに対応する列がない限り、Magentoはそのように扱いません。列が存在しない場合、Magentoはvarchar
デフォルトで属性を扱い、モデルのvarchar EAVテーブルで検索しますcatalog_product_entity_varchar
。
プロジェクトで静的属性を使用する場合は、インストール/アップグレードスクリプトで2つのことを行う必要があります。最初に、正しいエンティティー定義を使用して、メインエンティティテーブルに列を追加する必要があります。次に、addAttribute()
メソッドを使用して属性をインストールし、属性をとして定義する必要がありますstatic
。Mage_Catalog
この場合の動作をよりよく理解するには、インストールスクリプトを参照してください。
カスタムの静的属性に基づいてクエリを頻繁に実行する場合は、新しい列にインデックスを追加して、データの取得を高速化することを検討してください。
catalog_product_entity
そうでない場合、catalog_product_entity_varcharのチェックにフォールバックします。
コアからのサンプルは次のとおりです。
$installer->run("
ALTER TABLE `{$installer->getTable('catalog/product')}` ADD `has_options` SMALLINT(1) NOT NULL DEFAULT '0';
");
$installer->addAttribute('catalog_product', 'has_options', array(
'type' => 'static',
'visible'=>false,
'default' => false
));