我们有一个网站,有两个商店的意见: FR和EN。对于某些产品,导入后不会刷新EN存储视图catalog_product_flat。在EAV表中,一切都很好。数据重新索引应该截断这个平面表,并用更新的数据填充它。不知怎么的,它对某些物品不起作用。
你们中有谁有类似的问题吗?如果有任何关于这个话题的线索或建议,我将不胜感激。
编辑
我已经做了进一步的检查,我对EAV表的看法是错误的。事实证明,catalog_product_entity_varchar与catalog_product_flat是一致的。因此,平面表具有与EAV表相同的数据,但在Admin中,值是错误的。对于EN store视图,它们与默认值相同,仅适用于某些产品(魔术?;)。在我的本地电脑上,我没有遇到这样的问题。这只是在我们的生产环境上。据我所知,我们不使用任何DB复制(这可能是这里的问题)。
发布于 2011-03-11 10:50:05
我搞错了什么不对。所有的数据库都没问题。问题是从DB检索的属性顺序。
在Mage_Eav_Model_Entity_Abstract中我们可以找到:
$selects = array();
foreach ($this->getAttributesByTable() as $table=>$attributes) {
$selects[] = $this->_getLoadAttributesSelect($object, $table);
}
if (!empty($selects)) {
$values = $this->_getReadAdapter()->fetchAll(implode(' UNION ', $selects));
foreach ($values as $valueRow) {
$this->_setAttribteValue($object, $valueRow);
}
}行implode(' UNION ', $selects)连接所有select语句。但是不存在ORDER BY,因此可以按随机顺序检索数据。事实上,对于一些产品来说,它是这样的。该选择获取存储视图0(始终)和选定存储视图(当前)的属性值。
数组$values包含具有属性的数组。Order在这里确实很重要,因为如果存储视图(例如1)的属性(例如'name')将在存储视图0的属性之前继续进行,那么它将被覆盖。
解决方案是将ORDER BY子句添加到$selects或$values数组中。
发布于 2011-10-13 18:25:59
EAV数据库模型被Magento使用,以便于升级和开发,因为该模型为处理数据和属性提供了更大的灵活性。
当在Magento中启用平面目录时,上述所有产品属性(id、name、price)都保存在一个名为catalog_product_flat的表中。然后Magento从平面表中获取产品数据,而不是连接所有其他较小的表。
平面目录有两种类型: 1)平面目录产品2)平面目录类别
任何改进performance.
的目录。
启用平面目录类别:
Panel->System->Configuration->Catalog->Frontend->Use
启用平面目录产品:
记住,最初的选择列表是
管理Panel->System->Configuration->Catalog->Frontend->Use平面目录产品或,管理Panel->System->Configuration->Catalog->Frontend->Use平面目录产品
是不可编辑的。您必须从缓存管理重新生成平面目录。只有这样,选择列表才可编辑。
发布于 2011-03-04 13:57:19
确保在导入Catalog产品时,导入文件中为产品的所需属性提供了正确的值。如果没有正确地完成这一操作,那么数据重新索引可能无法正常工作。
在重新索引之前,最好还是从"Cache Management“和Magento安装目录的"cache”文件夹中清除缓存。
希望能帮上忙。
https://stackoverflow.com/questions/5193150
复制相似问题