Yanıtlar:
Bakın Mage_Eav_Model_Entity_Setup::removeAttribute(). İki argüman alır - ilki varlık kodu, ikincisi özellik kodu.
Düzenle - kurulum dışı bir kapsamdan çalıştırmak için:
<?php
include 'app/Mage.php';
Mage::app();
$setup = Mage::getResourceModel('catalog/setup','catalog_setup');
$setup->removeAttribute('catalog_product','attr_code');
catalog/setupile customer/setup, catalog_setupbirlikte customer_setupve catalog_productbirlikte customer.
Magento'nun ilk kuralı şudur: Asla veritabanını doğrudan düzenlemeyin.
Birçok kez bu kuralı çiğnediğimi itiraf ediyorum, bu yüzden ...
öznitelikleri silebilirsiniz eav_attribute, kısıtlamaların ON DELETE CASCADEgeri kalanı tabloları temizlemesi gerekir.
Ama yine de temiz bir yol almalısın:
$attributeId = 55;
Mage::getModel('catalog/resource_eav_attribute')->load($attributeId)->delete();
Uzun sürmemelidir ve kuralları kendiniz ile rahat hissedersiniz, çünkü kuralları çiğnediniz.
Hangi yöntemi seçtiğinizin önemli değil, ancak her iki durumda da DB'nizi yedeklemeniz önemlidir.
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "my_attribute";
$installer->removeAttribute('catalog_product', 'my_attribute1');veya$installer->removeAttribute('catalog_category', 'my_attribute2');Ama bu kodu ayrı bir dosyada kullanmanın bir yolu var mı? Ben (Magento en nerede kök klasöründe dosyayı yerleştirmek istiyorumindex.php), bu yüzden mümkün olacağını web tarayıcısında komut dosyası çağırmak için:example.com/delete_attributes.php/. Beni doğru yöne çevirebilir misin?