Saya mencari metode tercepat dan andal untuk pembaruan atribut massal. Di bawah ini adalah metode yang saya ketahui tetapi saya tidak tahu harus ke mana.
$store_id = 0;
Mage::getSingleton('catalog/product_action')->updateAttributes(
array($product_id),
array('attribute_code' => $attribute_code),
$store_id
);
atau
$product->setData($attribute_code, 1234);
$product->getResource()->saveAttribute($product, $attribute_code);
magento-1.8
magento-enterprise
product-attribute
best-practice
Deepak Mallah
sumber
sumber
load
. apa pun kecuali cepat. Misalnya, dalam metode 2, baris pertama dengan beban produk tidak berguna. Anda tidak menggunakan di$product
mana pun.Sebenarnya ada 3 cara untuk memperbarui atribut pada suatu produk tanpa menyimpan produk lengkap. Tergantung pada kode / persyaratan yang satu bisa lebih cepat dari yang lain.
Metode 1:
Metode 2:
Metode 3: (tercepat)
Semua metode di atas jauh lebih cepat yang menyelamatkan seluruh produk, namun ada beberapa perbedaan kinerja utama:
Method 1
:Method 2
:(Anda dapat melewati beberapa produk dan beberapa atribut)
Method 3
:(jadi itu adalah pendekatan campuran antara metode 1 dan 2)
Metode 3 adalah yang lebih fleksibel lagi pula Anda harus mengindeks ulang produk / atribut tersebut secara manual. (untuk memperbaruinya di frontend)
Ini mungkin berguna jika Anda ingin memperbarui banyak produk dengan cepat dan kemudian memanggil reindex di akhir.
(jika Anda menggunakan metode 2, pengindeksan kembali untuk setiap produk dipanggil setelah pembaruan dan beberapa panggilan ini membuat seluruh proses menjadi lambat)
Untuk mengindeks kembali secara manual satu produk, lihat fungsi-fungsi yang disediakan oleh Mage_Catalog_Model_Product_Flat_Indexer seperti:
updateAttribute($attributeCode, $store = null, $productIds = null)
updateProduct($productIds, $store = null)
sumber
catalog_product_entity
.value_id
DARIcatalog_product_entity
MANA (entity_type_id = 4 AND atribut_id = '68 'AND entitas_id = '29') `` `tidak mengharapkan itu. Berjalan pada 1.9.3.2Memperbarui
"Pembaruan atribut massal" untuk atribut atau produk?
Berpikir memperbarui beberapa atribut sudah terjawab, tetapi untuk produk ini dapat bermanfaat ...
Jika Anda ingin memperbarui produk dari koleksi, jangan lakukan ini ...
Ini akan mengirimkan acara, membangun kembali pricerules dan indeks. Dengan ini tidak ada acara (dan beberapa hal lainnya) yang dilewati dan jauh lebih cepat.
Untuk menghindari pembaruan pricerule, Anda dapat menambahkan ...
Untuk menonaktifkan / mengaktifkan pengindeksan ulang dengan cepat, lihat ini ... https://github.com/Flagbit/Magento-ChangeAttributeSet/commit/676f3af77fec880bc64333403675d183e8639fae
Dan juga membersihkan cache sebelum pembaruan massal (produk) dapat meningkatkan kinerja ...
Beberapa angka dari debugging di sini: https://github.com/Flagbit/Magento-ChangeAttributeSet/issues/16
Mage::getSingleton('catalog/product_action')->updateAttributes(...)
tampaknya bukan menjadi metode tercepat ... setidaknya tidak dengan pengaturan mutlistore dan tabel datar dihidupkan ...saveAttribute()
updateAttributes()
updateAttributes()
(sumber daya tunggal)sumber
updateAttributes() (resource singleton)
mengambil nilai admin yang sebenarnya? atau id dari elemen dropdown? (entah bagaimana kita selalu mendapatkan nilai / nilai kosong menggunakan metode ini yaitu tidak ada yang dipilih