質問

私はを使用しています 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

このクエリを試してみてください。

他のヒント

Luffyの答えは、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