属性backend_type =静态?


23

有人可以解释backend_type 静态属性的重要性/相关性吗?

我在无法加载属性时遇到一些问题,我想知道这是否backend_type与它有关?

此外,这与平面表中的内容有某种关系吗?

Answers:


37

静态属性是存储在实体主表中的属性-对于目录产品catalog_product_entity。例如,sku目录产品的属性定义为static。静态属性始终由Magento加载,并且在您要快速检索信息或优化数据查找时特别有用。这种类型的属性的一个缺点是您不能具有商店特定的值,这是Magento EAV系统的优点之一。

即使您将属性定义为static,除非您在主实体表中具有相应的列,否则Magento都不会将其视为此类。如果该列不存在,则Magento varchar默认情况下将其视为属性,并在模型的varchar EAV表中查找-对于产品catalog_product_entity_varchar

如果要在项目中使用静态属性,则必须在安装/升级脚本中做两件事。首先,您需要使用正确的列定义将列添加到主实体表。接下来,您需要使用addAttribute()方法安装属性,并将属性定义为static。请参考的安装脚本,Mage_Catalog以更好地了解这种情况下的工作方式。

如果计划基于自定义静态属性经常运行查询,请考虑在新列上添加索引以加快数据获取速度。


1
category_ids是静态的。它不在catalog_product_entity_varchar表中。
ahnbizcad

摘要:静态表示该值是中的一列catalog_product_entity,如果不是,则将退回到签入catalog_product_entity_varchar中。
ahnbizcad

1

这是来自核心的示例:

$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
));

1
这和问题有什么关系?
马里乌斯

@Marius这只是如何添加静态属性的示例。
Roman Snitko

假设您通过MySQL将列直接添加到数据库中。您如何将现有产品属性的TYPE更改为STATIC?问题:我们可以只在某个表中更新type = static,就行吗?
snh_nl
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.