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/setup
ile customer/setup
, catalog_setup
birlikte customer_setup
ve catalog_product
birlikte 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 CASCADE
geri 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?