3

我正在从另一个开发人员那里接管一个网站,并且发现属性设置有点混乱。

具体来说,产品具有不与相关属性集关联的属性。

如果您使用属性集“葡萄酒”的葡萄酒,其属性之一是“葡萄品种”。

但我也有具有完全不同属性集的“啤酒”,但不知何故,我的一种啤酒有葡萄品种。

它没有分配给 Beers 属性集,它没有显示在该产品的后端,(所以我无法编辑它)但如果我查看数据库,它就在那里(在 catalog_product_entity_* 和 catalog_product_index_eav 中),此外当我进行出口时,它也在那里,如果有人搜索“梅洛”,他们就会想出这种啤酒。有数百种这样的产品。

从不在其指定属性集中的产品中删除所有属性的最佳方法是什么?

我敢肯定,我可以在 SQL 中弄清楚,但这不是最好的做事方式,因为我害怕错过一些东西并完全搞砸产品。

4

2 回答 2

5

这就是我最终做的。几周后,它似乎还没有引起任何问题:

CREATE TABLE catalog_product_entity_int_old LIKE catalog_product_entity_int;
INSERT INTO catalog_product_entity_int_old SELECT * FROM catalog_product_entity_int;

DELETE FROM catalog_product_entity_int 
    WHERE value_id IN 
        (SELECT cpei.value_id 
            FROM catalog_product_entity_int_old cpei 
            WHERE cpei.attribute_id NOT IN 
                (SELECT eea.attribute_id 
                    FROM eav_entity_attribute eea 
                        JOIN catalog_product_entity cpe ON eea.attribute_set_id = cpe.attribute_set_id 
                    WHERE cpe.entity_id = cpei.entity_id) 
        ORDER BY cpei.entity_id)

DELETE FROM catalog_product_index_eav WHERE
attribute_id NOT IN (
    (SELECT eea.attribute_id 
    FROM eav_entity_attribute eea 
        JOIN catalog_product_entity cpe ON eea.attribute_set_id = cpe.attribute_set_id 
    WHERE cpe.entity_id = catalog_product_index_eav .entity_id) 
);

然后重新生成索引。

于 2013-10-16T13:15:18.313 回答
0

我肯定会使用Magmi来清理它:

首先,从 Magento 中导出产品(系统 -> 导入/导出 -> 配置文件),然后选择“导出所有产品”。在生成的 CSV 中,您将拥有每个属性的列,并且您可以删除每个产品的任何不相关的属性值。这将允许您绕过为特定产品设置属性但不在产品属性集中设置的后端。

仔细查看 Magmi Wiki,但有一些快速提示: Magmi 仅导入您指定的列,因此您可以在执行导入时安全地删除大部分列。例如,如果我不导入图像(否则您可能会丢失所有图像),我总是确保删除图像列。此外,请务必在运行导入之前进行数据库备份,以防出现问题。

于 2013-09-30T16:40:58.920 回答