Answers:
静态属性是存储在实体主表中的属性-对于目录产品catalog_product_entity
。例如,sku
目录产品的属性定义为static
。静态属性始终由Magento加载,并且在您要快速检索信息或优化数据查找时特别有用。这种类型的属性的一个缺点是您不能具有商店特定的值,这是Magento EAV系统的优点之一。
即使您将属性定义为static
,除非您在主实体表中具有相应的列,否则Magento都不会将其视为此类。如果该列不存在,则Magento varchar
默认情况下将其视为属性,并在模型的varchar EAV表中查找-对于产品catalog_product_entity_varchar
。
如果要在项目中使用静态属性,则必须在安装/升级脚本中做两件事。首先,您需要使用正确的列定义将列添加到主实体表。接下来,您需要使用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
));