Respostas:
Veja Mage_Eav_Model_Entity_Setup::removeAttribute()
. São necessários dois argumentos - o primeiro é o código da entidade e o segundo é o código do atributo.
Editar - para executar a partir de um escopo de não instalação:
<?php
include 'app/Mage.php';
Mage::app();
$setup = Mage::getResourceModel('catalog/setup','catalog_setup');
$setup->removeAttribute('catalog_product','attr_code');
catalog/setup
com customer/setup
, catalog_setup
com customer_setup
e catalog_product
com customer
.
A primeira regra do Magento é: nunca edite o banco de dados diretamente.
Admito que quebrei essa regra em várias ocasiões, então ...
você pode excluir os atributos de eav_attribute
, as restrições com ON DELETE CASCADE
devem limpar o restante das tabelas.
Mas ainda acho que você deve seguir o caminho limpo:
$attributeId = 55;
Mage::getModel('catalog/resource_eav_attribute')->load($attributeId)->delete();
Não deve demorar muito e você se sentirá em paz consigo mesmo porque não violou as regras.
Não é importante qual método você escolhe, mas sim o backup do seu banco de dados, nos dois casos.
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "my_attribute";
$installer->removeAttribute('catalog_product', 'my_attribute1');
ou$installer->removeAttribute('catalog_category', 'my_attribute2');
Mas existe uma maneira de usar esse código em um arquivo separado? Eu gostaria de colocar o arquivo na pasta raiz (onde de Magentoindex.php
), de modo que seria possível chamar o script no navegador da Web:example.com/delete_attributes.php/
. Você pode me apontar na direção certa?