โดยปกตินี่เป็นข้อบกพร่องในข้อมูลหรือในการใช้งานคอลเลกชัน
นี่คือวิธีแก้ไขปัญหาที่กว้างขึ้น นี้ทำงานบนคอลเลกชันโดยพลการไม่เพียง Catalog_Model_Product
แต่สำหรับ
ขั้นตอนที่ 1. การปรับเปลี่ยนไฟล์หลักlib/Varien/Data/Collection.php
, function addItem()
แต่ไม่เหมือนคำตอบนี้แสดงให้เห็นไม่ซ่อนข้อผิดพลาด
ให้เพิ่มข้อมูลข้อผิดพลาดพิเศษลงในข้อยกเว้นที่เกิดขึ้นแทน:
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());
}
ขั้นตอนที่ 2 ใช้แบบสอบถามที่ละเมิดจากรายงานข้อผิดพลาดของคุณและเรียกใช้ด้วยมือ ดูว่าระเบียนใดที่ทำสำเนาคีย์การรวบรวม เพิ่มorder by <key field>
ตามต้องการ
แยกแบบสอบถามออกตารางที่เข้าร่วมแบบหนึ่งต่อหนึ่งและดูว่าระเบียนใดทำให้เกิดการทำซ้ำ
ฉันเชื่อว่าแพทช์นี้ควรอยู่ในแกนกลาง
group by
เพื่อรับรหัสผลิตภัณฑ์ที่ไม่ซ้ำกันเท่านั้น ดูmagento.stackexchange.com/questions/12773/…