Thông thường, đây là một lỗi trong dữ liệu hoặc trong quá trình thực hiện bộ sưu tập.
Đây là một giải pháp cho một vấn đề rộng lớn hơn. Điều này hoạt động trên bộ sưu tập tùy ý, không chỉ cho Catalog_Model_Product
.
Bước 1. Sửa file lõi lib/Varien/Data/Collection.php
, function addItem()
nhưng không giống như câu trả lời này cho thấy, không che giấu lỗi.
Thay vào đó, hãy thêm thông tin lỗi vào ngoại lệ được ném:
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());
}
Bước 2. Lấy truy vấn vi phạm từ báo cáo lỗi của bạn và chạy bằng tay. Xem những gì hồ sơ trùng lặp khóa bộ sưu tập. Thêm order by <key field>
khi cần thiết.
Phân tích từng truy vấn loại bỏ từng bảng tham gia và xem bản ghi nào gây ra sự trùng lặp.
Tôi tin rằng bản vá này nên ở trong lõi.
group by
để chỉ nhận id sản phẩm duy nhất. Xem magento.stackexchange.com/questions/12773/ từ