जवाबों:
देख लो Mage_Eav_Model_Entity_Setup::removeAttribute()
। इसमें दो तर्क दिए गए हैं - पहला इकाई कोड है, और दूसरा विशेषता कोड है।
संपादित करें - एक गैर-संस्थापन क्षेत्र से चलाने के लिए:
<?php
include 'app/Mage.php';
Mage::app();
$setup = Mage::getResourceModel('catalog/setup','catalog_setup');
$setup->removeAttribute('catalog_product','attr_code');
catalog/setup
के साथ customer/setup
, catalog_setup
के साथ customer_setup
, और catalog_product
साथ customer
।
Magento का पहला नियम है: डेटाबेस को कभी भी सीधे संपादित न करें।
मैं मानता हूं कि मैंने कई बार इस नियम को तोड़ा है, इसलिए ...
आप उन विशेषताओं को हटा सकते हैं eav_attribute
, जिनके साथ बाधाओं ON DELETE CASCADE
को बाकी तालिकाओं को साफ करना चाहिए।
लेकिन मुझे अभी भी लगता है कि आपको साफ रास्ता अपनाना चाहिए:
$attributeId = 55;
Mage::getModel('catalog/resource_eav_attribute')->load($attributeId)->delete();
यह लंबा नहीं होना चाहिए और आप खुद को शांति महसूस करेंगे क्योंकि आपने नियम नहीं तोड़े हैं।
यह महत्वपूर्ण नहीं है कि आप किस विधि को चुनते हैं, लेकिन दोनों मामलों में अपने DB का बैकअप लेना है।
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "my_attribute";
$installer->removeAttribute('catalog_product', 'my_attribute1');
या$installer->removeAttribute('catalog_category', 'my_attribute2');
लेकिन एक अलग फ़ाइल में इस कोड का उपयोग करने का एक तरीका है? मैं फ़ाइल को रूट फ़ोल्डर (जहां मैगेंटो केindex.php
) में रखना चाहता हूं , ताकि वेब ब्राउज़र में स्क्रिप्ट को कॉल करना संभव होगाexample.com/delete_attributes.php/
:। क्या मुझे आपसे सही दिशा निर्देशन मिलेगा?