Saya ingin menghapus atribut EAV yang tidak digunakan langsung dari database sebelum saya memindahkan toko saya hidup. Atribut dapat ditemukan dalam eav_attribute
tabel, dapatkah saya menghapus atribut dari tabel ini? Apakah ini aman? Atau apakah saya juga perlu mengedit tabel EAV lainnya?
28
$installer->removeAttribute('catalog_product', 'my_attribute1');
atau$installer->removeAttribute('catalog_category', 'my_attribute2');
Tetapi apakah ada cara untuk menggunakan kode ini dalam file terpisah? Saya ingin menempatkan file dalam folder root (di mana Magentoindex.php
), sehingga akan ada kemungkinan untuk memanggil script di browser web:example.com/delete_attributes.php/
. Bisakah Anda mengarahkan saya ke arah yang benar?catalog/setup
dengancustomer/setup
,catalog_setup
dengancustomer_setup
, dancatalog_product
dengancustomer
.Aturan pertama Magento adalah: Jangan pernah mengedit database secara langsung.
Saya akui saya melanggar aturan ini pada banyak kesempatan, jadi ...
Anda dapat menghapus atribut dari
eav_attribute
, kendala denganON DELETE CASCADE
harus membersihkan sisa tabel.Tapi saya masih berpikir Anda harus mengambil jalan yang bersih:
Seharusnya tidak butuh waktu lama dan Anda akan merasa damai dengan diri Anda sendiri karena Anda tidak melanggar aturan.
Tidak penting metode apa yang Anda pilih, tetapi mencadangkan DB Anda, dalam kedua kasus tersebut.
sumber
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "my_attribute";
DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "some_attr_code";
adalah solusi yang berfungsi , saya menggunakannya berkali-kali.
Terutama jika Anda menghapus ekstensi dan Magento masih ingin memanggil model atribut yang tidak ada
sumber