Saya mencoba memperbarui harga ke banyak produk (lebih dari 10.000). Cara saya melakukan itu sekarang sangat menyita waktu. Mana cara terbaik untuk mengulang semua produk dan memperbarui sebagian besar dari mereka?
Terima kasih
magento-1.9
product
products-management
eftihios1986
sumber
sumber
Jawaban:
Hai Magento memberikan atribut dengan kode di bawah ini
Contoh:
Menggunakan Koleksi Produk:
sumber
Mage::getSingleton('catalog/product_api')->update();
danMage::getSingleton('catalog/product_action')->updateAttributes()
. product_api mengambil rata-rata 1,7 detik dan product_action mengambil rata-rata 1,0 detik. Namun,$product->getResource()->saveAttribute()
gunakan rata-rata 0,04 detik pada rata-rata. Terima kasih!$product->getResource()->saveAttribute
tindakan. TERIMA KASIH!!Tulis SQL Query.
Cara terbaik kedua (dan yang saya sarankan):
\Mage_Catalog_Model_Resource_Product_Action::updateAttributes
Contoh kode oleh u_maxx:
Multiselek biasanya disimpan sebagai bilangan bulat yang dipisah koma, seperti
27,42,4711
. Karena itu jika Anda mengubah nilai untuk mengatakan1
, nilai-nilai lainnya hilang. Tapi yang bisa Anda lakukan adalah sesuatu sepertiCONCAT(value, ',1')
menambahkan nilai baru ke akhir, dipisahkan dengan koma. Saya pikir bahkan jika Anda menambahkan nilai dua kali, ini tidak masalah, karena Magento memfilternya saat item disimpan dan mengabaikan nilai kedua.sumber
<?php $allProductIds = Mage::getModel('catalog/product')->getCollection()->getAllIds(); $attributeCode = 'some_eav_attribute'; $attributeValue = NULL; $attrData = array( $attributeCode => $attributeValue ); $storeId = 0; Mage::getSingleton('catalog/resource_product_action')->updateAttributes($allProductIds, $attrData, $storeId);
Mage::getSingleton('catalog/resource_product_action')
keMage::getModel('catalog/product_action')
dengan parameter yang sama persis yang disebutkan di atas.10k produk, gunakan SQL. EAV hanya merusak air. Per pertanyaan adalah cara tercepat.
Temukan atribut_id
Pembaruan dengan ditemukan
attribute_id
dari permintaan di atas.Saya kira Anda bisa melakukan subselect dengan pembaruan tetapi untuk kesederhanaan demi dua pertanyaan SQL paling mudah untuk dipahami.
CATATAN:
entity_type_id = 4
paling sering entri EAV produk. Jika Anda perlu untuk memperbarui kategori massal atau atribut pelanggan, ini akan berbeda serta tabel yang diperbarui berdasarkan pada jenis atribut apa yang Anda perbarui. Juga jika Anda memiliki pengaturan multi-toko pastikan dan perhatikan dan kondisistore_id
sumber
Selanjutnya untuk jawaban Fabian di atas, Anda dapat memperbarui beberapa bidang sekaligus. Contoh di bawah ini hanya memiliki 2 (dalam stok, status stok), tetapi Anda dapat menggunakan sebanyak yang Anda inginkan.
sumber