Normalmente, este es un error en los datos o en la implementación de la colección.
Aquí hay una solución a un problema más amplio. Esto funciona en una colección arbitraria, no solo para Catalog_Model_Product
.
Paso 1. Modificar el archivo central lib/Varien/Data/Collection.php
, function addItem()
pero a diferencia de esta respuesta sugiere, no ocultan el error.
En su lugar, agregue información de error adicional a la excepción lanzada:
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());
}
Paso 2. Tome la consulta ofensiva de su informe de errores y ejecútela a mano. Vea qué registros duplican la clave de colección. Agregue order by <key field>
según sea necesario.
Diseccione la consulta eliminando las tablas participantes una por una, y vea qué registro causó la duplicación.
Creo que este parche debería estar en el núcleo.
group by
para obtener solo una identificación de producto única. Ver magento.stackexchange.com/questions/12773/…