Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento,目录\u产品\u平面出现问题_Magento_Product - Fatal编程技术网

Magento,目录\u产品\u平面出现问题

Magento,目录\u产品\u平面出现问题,magento,product,Magento,Product,我们有一个网站,有两个商店视图:FR和EN。对于导入后的某些产品,EN store视图的目录\产品\平面未刷新。在EAV表格中,一切正常。数据重新索引应该截断这个平面表,并用更新的数据填充它。不知何故,它对某些项目不起作用 你们有没有人有过类似的问题?如果您能就这个话题提供任何线索或建议,我将不胜感激 编辑 我做了进一步的检查,我对EAV表的看法是错误的。事实证明,catalog\u product\u entity\u varchar与catalog\u product\u flat是一致的。

我们有一个网站,有两个商店视图:FR和EN。对于导入后的某些产品,EN store视图的目录\产品\平面未刷新。在EAV表格中,一切正常。数据重新索引应该截断这个平面表,并用更新的数据填充它。不知何故,它对某些项目不起作用

你们有没有人有过类似的问题?如果您能就这个话题提供任何线索或建议,我将不胜感激

编辑


我做了进一步的检查,我对EAV表的看法是错误的。事实证明,catalog\u product\u entity\u varchar与catalog\u product\u flat是一致的。所以平面表的数据与EAV表相同,但在管理面板中的值是错误的。对于EN store view,它们与默认值相同,仅适用于某些产品;。在我的本地PC上,我没有遇到这样的问题。这仅适用于我们的生产环境。据我所知,我们不使用任何数据库复制,这可能是这里的问题。

请确保在导入目录产品时,在导入文件中为产品的所需属性提供了正确的值。如果未正确执行此操作,则数据重新索引可能无法正常工作

此外,在重新索引之前,最好从Magento安装目录的缓存管理和缓存文件夹中清除缓存


希望有帮助。

请确保在导入目录产品时,在导入文件中为产品的必需属性提供了正确的值。如果未正确执行此操作,则数据重新索引可能无法正常工作

此外,在重新索引之前,最好从Magento安装目录的缓存管理和缓存文件夹中清除缓存


希望有帮助。

我错了。数据库一切正常。问题是从数据库中检索的属性的顺序

在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);
   }
}
行内爆'UNION',$selects连接所有select语句。但是没有ORDERBY,所以数据可以按随机顺序检索。事实上,有些产品是这样的。“选择”始终为“存储视图0”和“选定存储视图当前”获取属性值

Array$值包含一组具有属性的数组。顺序在这里并不重要,因为如果存储视图(例如1)的属性(例如“名称”)在存储视图0的属性之前继续,那么它将被覆盖


解决方案是将ORDERBY子句添加到$selects或sort$values数组中。

我错了。数据库一切正常。问题是从数据库中检索的属性的顺序

在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);
   }
}
行内爆'UNION',$selects连接所有select语句。但是没有ORDERBY,所以数据可以按随机顺序检索。事实上,有些产品是这样的。“选择”始终为“存储视图0”和“选定存储视图当前”获取属性值

Array$值包含一组具有属性的数组。顺序在这里并不重要,因为如果存储视图(例如1)的属性(例如“名称”)在存储视图0的属性之前继续,那么它将被覆盖


解决方案是将ORDER BY子句添加到$selects或sort$values数组中。

EAV数据库模型由Magento使用,以便于升级和开发,因为该模型提供了更大的灵活性来处理数据和属性

在Magento中启用平面目录后,上述所有产品属性id、名称、价格都保存在一个名为catalog_product_flat的表中。然后,Magento从平面表中获取产品数据,而不是合并所有其他较小的表

平面目录有两种类型: 1平面目录产品 2平面目录类别

为提高性能,建议在任何Magento安装中使用平面类别。 扁平产品是为超过1000个SKU的产品目录设计和推荐的。 启用平面目录类别:

转到管理面板->系统->缓存管理->重建平面目录类别 转到管理面板->系统->配置->目录->前端->使用平面目录类别=是 启用平面目录产品:

转到管理面板->系统->缓存管理->重建平面目录产品 转到管理面板->系统->配置->目录->前端->使用平面目录产品=是 请记住,最初的选择列表

管理面板->系统->配置->目录->前端->使用平面目录产品 或 管理面板->系统->配置->目录->前端->使用平面目录产品


是不可编辑的。您必须从缓存管理重建平面目录。只有这样,选择列表才会变得可编辑

EAV数据库模型由Magento使用,便于升级和开发,因为该模型提供了更大的灵活性,可以处理数据和数据 属性

在Magento中启用平面目录后,上述所有产品属性id、名称、价格都保存在一个名为catalog_product_flat的表中。然后,Magento从平面表中获取产品数据,而不是合并所有其他较小的表

平面目录有两种类型: 1平面目录产品 2平面目录类别

为提高性能,建议在任何Magento安装中使用平面类别。 扁平产品是为超过1000个SKU的产品目录设计和推荐的。 启用平面目录类别:

转到管理面板->系统->缓存管理->重建平面目录类别 转到管理面板->系统->配置->目录->前端->使用平面目录类别=是 启用平面目录产品:

转到管理面板->系统->缓存管理->重建平面目录产品 转到管理面板->系统->配置->目录->前端->使用平面目录产品=是 请记住,最初的选择列表

管理面板->系统->配置->目录->前端->使用平面目录产品 或 管理面板->系统->配置->目录->前端->使用平面目录产品


是不可编辑的。您必须从缓存管理重建平面目录。只有这样,选择列表才会变得可编辑

几乎可以肯定的是,EAV表中缺少一些不明显的值。Magento使用复杂联接来完成重新索引,因此缺少值将导致没有为平面表创建条目。几乎可以肯定的是,EAV表中缺少一些不明显的值。Magento使用复杂联接来完成重新索引,因此缺少值将导致无法为平面表创建条目。