Chcę usunąć nieużywane atrybuty EAV bezpośrednio z bazy danych przed przeniesieniem mojego sklepu na żywo. Atrybuty można znaleźć w eav_attribute
tabeli, czy mogę usunąć atrybuty z tej tabeli? Czy to jest bezpieczne? Czy też muszę edytować inne tabele EAV?
28
$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?catalog/setup
zcustomer/setup
,catalog_setup
zcustomer_setup
icatalog_product
zcustomer
.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 zON DELETE CASCADE
powinny oczyścić resztę tabel.Ale nadal uważam, że powinieneś pójść czystą drogą:
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.
źródło
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
źródło