Коллекция использует метод getId()
для добавленного элемента, чтобы получить ключ массива для внутреннего массива $_items
. Ваша ошибка Элемент с таким же идентификатором "1" уже существует на второй итерации означает, что вы устанавливаете какое-то значение для новых моделей, которое возвращается в качестве значения идентификатора.
Если getId()
возвращает null
, то элемент добавляется с помощью $_items[] = $item
в коллекцию без этой ошибки.
Это означает, что если вы используете стандартные модели и модели ресурсов, $data
, вероятно, не соответствует массиву, который вы разместили.
Ключ, используемый для возврата значения идентификатора модели, зависит от типа объекта.
Если модель использует модель ресурсов на основе EAV (Mage_Eav_Model_Entity_Abstract
), ключом является entity_id
, например, array('entity_id' => 1, 'foo' => 'bar')
.
Если в модели используется модель ресурсов на основе плоских таблиц (Mage_Core_Model_Resource_Db_Abstract
), поле первичного ключа (обычно) задается в методе _construct()
модели ресурсов в качестве второго параметра для вызова _init()
.
Таким образом, если инициализация модели ресурса выглядит как $this->_init('my_module/my_item', 'item_id')
, значение для набора в массиве $data
будет array('item_id' => 1, 'foo' => 'bar')
.