我正在使用 FastSimpleimport 模块创建我的自定义导入。这有一个 setDropdownAttributes() 函数可以自动创建所需的属性值,但不会删除未使用的值。这些仍然显示在我的高级搜索中。

如何搜索和删除未使用的属性值?

我认为他们被存储在 eav_attribute_option_value 但是我不确定如何检查它们是否被产品使用。

有帮助吗?

解决方案

delete c,b
from eav_attribute a
inner join eav_attribute_option b on a.attribute_id = b.attribute_id
inner join eav_attribute_option_value c on c.`option_id` = b.option_id
LEFT join catalog_product_entity_int pi on b.option_id=pi.value and pi.store_id=0 and b.attribute_id=pi.attribute_id
where entity_id is null

尝试此查询..

其他提示

路飞的答案在技术上是不正确的,因为它有3个问题:

  • 它将删除值 admin 商店视图仅留下一些与商店视图相关的垃圾
  • 它将删除所有实体类型的未使用的属性值
  • 它将删除 全部 具有“多个选择”类型的属性的值,无论是否将其分配给任何产品,它们都存储在任何产品中 catalog_product_entity_varchar 并不是 catalog_product_entity_int

下面的查询解决了这些问题:

    DELETE o, v
      FROM `eav_attribute` a
INNER JOIN `eav_attribute_option` o ON a.`attribute_id` = o.`attribute_id`
INNER JOIN `eav_attribute_option_value` v ON v.`option_id` = o.`option_id`
INNER JOIN `eav_entity_type` t ON t.`entity_type_id` = a.`entity_type_id`
 LEFT JOIN `catalog_product_entity_int` pi ON o.`option_id` = pi.`value` AND o.`attribute_id` = pi.`attribute_id`
 LEFT JOIN `catalog_product_entity_varchar` pv ON o.`option_id` = pv.`value` AND o.`attribute_id` = pv.`attribute_id`
     WHERE pi.`entity_id` IS NULL
       AND pv.`entity_id` IS NULL
       AND t.`entity_type_code` = "catalog_product"
许可以下: CC-BY-SA归因
scroll top