Je souhaite supprimer les attributs EAV inutilisés directement de la base de données avant de déplacer mon magasin en direct. Les attributs peuvent être trouvés dans le eav_attribute
tableau, puis-je supprimer des attributs de ce tableau? Est-ce sûr? Ou dois-je également modifier d'autres tables EAV?
28
$installer->removeAttribute('catalog_product', 'my_attribute1');
ou$installer->removeAttribute('catalog_category', 'my_attribute2');
Mais existe-t-il un moyen d'utiliser ce code dans un fichier séparé? Je voudrais placer le fichier dans le dossier racine (où Magento deindex.php
), de sorte qu'il serait possible d'appeler le script dans le navigateur Web:example.com/delete_attributes.php/
. Pouvez-vous me diriger dans la bonne direction?catalog/setup
aveccustomer/setup
,catalog_setup
aveccustomer_setup
etcatalog_product
aveccustomer
.La première règle de Magento est la suivante: ne modifiez jamais la base de données directement.
J'avoue que j'ai enfreint cette règle à plusieurs reprises, donc ...
vous pouvez supprimer les attributs de
eav_attribute
, les contraintes avecON DELETE CASCADE
devraient nettoyer le reste des tables.Mais je pense toujours que vous devriez prendre la voie propre:
Cela ne devrait pas prendre longtemps et vous vous sentirez en paix avec vous-même parce que vous n'avez pas enfreint les règles.
Peu importe la méthode que vous choisissez, mais la sauvegarde de votre base de données est, dans les deux cas.
la source
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "my_attribute";
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "some_attr_code";
est une solution de travail , je l'ai utilisée plusieurs fois.
Surtout si vous supprimez l'extension et que Magento veut toujours appeler un modèle d'attribut inexistant
la source