Supprimer les valeurs d'attributs non utilisés
-
16-10-2019 - |
Question
J'utilise le module fastsimpleimport pour créer mon importation personnalisée. Cela a une fonction setDropdownAttributes()
pour créer automatiquement des valeurs d'attributs nécessaires mais il ne supprime pas les valeurs non utilisées. Ceux montrent encore dans ma recherche avancée.
Comment puis-je rechercher et supprimer les valeurs d'attributs non utilisés?
Je pense qu'ils sont stockés dans eav_attribute_option_value
mais je ne suis pas sûr de savoir comment vérifier si elles sont utilisées par un produit.
La solution
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
Essayez cette requête ..
Autres conseils
La réponse de Luffy est techniquement incorrect car il a 3 numéros:
- il va supprimer des valeurs pour une vue magasin
admin
ne laissant quelques magasins-vues des ordures connexes - il va supprimer les valeurs inutilisées des attributs de tous les types d'entités
- il va supprimer ALL valeurs des attributs avec « sélection multiple » de type, peu importe s'ils sont affectés à des produits ou non parce que les options elles sont stockées dans
catalog_product_entity_varchar
et noncatalog_product_entity_int
La requête ci-dessous répond à ces problèmes:
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"
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange