Respuestas:
Ver Mage_Eav_Model_Entity_Setup::removeAttribute()
. Se necesitan dos argumentos: el primero es el código de entidad y el segundo es el código de atributo.
Editar: para ejecutar desde un ámbito que no sea de instalación:
<?php
include 'app/Mage.php';
Mage::app();
$setup = Mage::getResourceModel('catalog/setup','catalog_setup');
$setup->removeAttribute('catalog_product','attr_code');
catalog/setup
con customer/setup
, catalog_setup
con customer_setup
y catalog_product
con customer
.
La primera regla de Magento es: nunca edite la base de datos directamente.
Admito que violé esta regla en numerosas ocasiones, así que ...
puedes eliminar los atributos eav_attribute
, las restricciones ON DELETE CASCADE
deberían limpiar el resto de las tablas.
Pero sigo pensando que deberías tomar el camino limpio:
$attributeId = 55;
Mage::getModel('catalog/resource_eav_attribute')->load($attributeId)->delete();
No debería tomar mucho tiempo y te sentirás en paz contigo mismo porque no rompiste las reglas.
No es importante el método que elija, pero en ambos casos es una copia de seguridad de su base de datos.
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "my_attribute";
$installer->removeAttribute('catalog_product', 'my_attribute1');
o ¿$installer->removeAttribute('catalog_category', 'my_attribute2');
Pero hay alguna manera de usar este código en un archivo separado? Me gustaría colocar el archivo en la carpeta raíz (donde de Magentoindex.php
), por lo que sería posible llamar al script en el navegador web:example.com/delete_attributes.php/
. ¿Me puede apuntar en la dirección correcta?