Magento - 如何清除属性集中没有的属性

时间:2013-09-30 15:14:27

标签: magento attributes

我正在接管另一位开发人员的网站,并发现属性的设置有点混乱。

具体而言,产品具有与相关属性集无关的属性。

如果你带的葡萄酒的属性设置为“葡萄酒”,其中一个属性是“葡萄品种”。

但我也有“Beers”,它们具有完全不同的属性集,但不知怎的,我的一个啤酒有葡萄品种。

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

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

我可以在SQL中弄明白我确定,但这不是最好的做事方式,因为我害怕错过一些东西而且完全搞砸了产品。

2 个答案:

答案 0 :(得分:3)

这就是我最终要做的事情。几个星期后,它似乎没有引起任何问题:

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

然后重新生成索引。

答案 1 :(得分:0)

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

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

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