Saya mendapatkan kesalahan ini saat mencoba memfilter koleksi produk
Item (Mage_Catalog_Model_Product) with the same id "6058" already exist
dan ingin bertanya apa yang bisa menyebabkan kesalahan karena hanya ada satu (terlihat) produk dengan ID yang sama di dalam Magento.
Apakah ada meja yang perlu dibersihkan untuk menghapus dupilcate ini?
magento-1.8
product
catalog
collection-filtering
pengguna1704524
sumber
sumber
group by
untuk mendapatkan hanya id produk unik. Lihat magento.stackexchange.com/questions/12773/...Jawaban:
Menambahkan
distinct
seperti yang disarankan dalam jawaban yang diterima memang memperbaiki masalah tetapi memiliki masalah kinerja. Basis data mungkin membuat tabel sementara pada disk saat menjalankan kueri dengandistinct
dan ini akan memperlambat permintaan Anda. Sebagai gantinya Anda dapat menambahkangroup
kondisi ke koleksi untuk menghapus duplikat.Lihatlah postingan ini . Apa yang mereka lakukan (dan saya telah melakukannya juga) dikelompokkan oleh entitas id. Ini harus berkinerja lebih baik.
sumber
distinct()
solusi dan ini akan menghapus catatan tambahan dari permintaan, yang berarti Anda mungkin kehilangan data tanpa memerhatikan. Jadi ini mungkin bukan solusi terbaik, seperti dalam kasus saya. Saya sekarang mencoba menemukan cara untuk mendapatkan kedua catatan dari tabel saya bergabung ke dalam koleksi sehingga saya bisa menampilkan kedua catatan pada baris yang sama di kotak.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:
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.
sumber
Masalah Anda adalah bahwa Anda memiliki koleksi (kemungkinan dengan gabungan atau gabungan) yang menghasilkan produk yang sama dimuat ke dalam koleksi dua kali.
Anda dapat mengubah koleksi yang dimuat dengan menambahkan metode berbeda ke objek yang dipilih.
Lihat http://framework.zend.com/manual/1.12/en/zend.db.select.html
Tetapi ini datang dengan masalah yang melekat. Menggunakan perbedaan akan menyebabkan tabel sementara dibuat di disk, bukan di memori, yang disertai dengan penalti kinerja.
sumber
Dalam kasus saya
tidak berfungsi saya gunakan:
Mat menjadi hejpful untuk seseorang juga
sumber