Delete unused attribute values
-
16-10-2019 - |
سؤال
I am using the fastsimpleimport module to create my custom import. This has a setDropdownAttributes()
function to automatically create needed attribute values but it does not remove unused values. Those still show up in my advanced search.
How can I search and remove unused attribute values?
I think they are stored in eav_attribute_option_value
but I am not sure how to check if they are used by a product.
المحلول
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
Try this Query..
نصائح أخرى
LuFFy's answer is technically incorrect as it has 3 issues:
- it will remove values for
admin
store view only leaving some store-views related garbage - it will remove unused values of attributes of all entity types
- it will remove ALL values from attributes with "multiple select" type regardless if they are assigned to any products or not because they options are stored in
catalog_product_entity_varchar
and notcatalog_product_entity_int
The query below addresses these problems:
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"
لا تنتمي إلى magento.stackexchange