Odpowiedzi:
Zobaczyć Mage_Eav_Model_Entity_Setup::removeAttribute(). Wymaga dwóch argumentów - pierwszy to kod jednostki, a drugi to kod atrybutu.
Edytuj - aby uruchomić z zakresu nieinstalacyjnego:
<?php
include 'app/Mage.php';
Mage::app();
$setup = Mage::getResourceModel('catalog/setup','catalog_setup');
$setup->removeAttribute('catalog_product','attr_code');
catalog/setupz customer/setup, catalog_setupz customer_setupi catalog_productz customer.
Pierwsza zasada Magento: Nigdy nie edytuj bazy danych bezpośrednio.
Przyznaję, że wielokrotnie łamałem tę zasadę, więc ...
możesz usunąć atrybuty eav_attribute, ograniczenia z ON DELETE CASCADEpowinny oczyścić resztę tabel.
Ale nadal uważam, że powinieneś pójść czystą drogą:
$attributeId = 55;
Mage::getModel('catalog/resource_eav_attribute')->load($attributeId)->delete();
Nie powinno to potrwać długo, a poczujesz się ze sobą w spokoju, ponieważ nie złamałeś zasad.
Nie jest ważne, jaką metodę wybierzesz, ale w obu przypadkach tworzona jest kopia zapasowa bazy danych.
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "my_attribute";
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "some_attr_code";
jest działającym rozwiązaniem, korzystałem z niego wiele razy.
Zwłaszcza jeśli usuniesz rozszerzenie, a Magento nadal chce wywołać nieistniejący model atrybutu
$installer->removeAttribute('catalog_product', 'my_attribute1');lub$installer->removeAttribute('catalog_category', 'my_attribute2');Ale czy istnieje sposób na użycie tego kodu w osobnym pliku? Chciałbym umieścić plik w folderze głównym (gdzie Magentoindex.php), dzięki czemu możliwe byłoby zadzwonić skrypt w przeglądarce internetowejexample.com/delete_attributes.php/. Czy możesz wskazać mi właściwy kierunek?