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.

Était-ce utile?

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 non catalog_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
scroll top