Удалить неиспользованные значения атрибута

magento.stackexchange https://magento.stackexchange.com/questions/1110

  •  16-10-2019
  •  | 
  •  

Вопрос

Я использую 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 с атрибуция
Не связан с magento.stackexchange
scroll top