Biasanya, ini adalah bug dalam data atau dalam implementasi pengumpulan.
Inilah solusi untuk masalah yang lebih luas. Ini berfungsi pada koleksi sewenang-wenang, tidak hanya untuk Catalog_Model_Product
.
Langkah 1. Memodifikasi file inti lib/Varien/Data/Collection.php
, function addItem()
, tapi tidak seperti jawaban ini menunjukkan, tidak menyembunyikan kesalahan.
Sebagai gantinya, tambahkan informasi kesalahan tambahan ke pengecualian yang dilemparkan:
if (isset($this->_items[$itemId])) {
throw new Exception('Item ('.get_class($item).
') with the same id "'.$item->getId().'" already exist' .
'. SQL that caused this: ' . $this->getSelect());
}
Langkah 2. Ambil kueri yang menyinggung dari laporan kesalahan Anda dan jalankan dengan tangan. Lihat catatan apa yang menduplikasi kunci koleksi. Tambahkan order by <key field>
sesuai kebutuhan.
Membedah kueri menghapus tabel yang berpartisipasi satu per satu, dan melihat catatan mana yang menyebabkan duplikasi.
Saya percaya tambalan ini harus menjadi inti.
group by
untuk mendapatkan hanya id produk unik. Lihat magento.stackexchange.com/questions/12773/...