Происхождение…
У меня есть модуль со сценарием установки (общий mysql4-upgrade-0.1.0-0.1.1.php), добавляющий атрибут для цитаты:
$eav = new Mage_Eav_Model_Entity_Setup('sales_setup'); $eav->addAttribute('quote', 'my_attribute', array('type' => 'varchar'));
Если я запустил хранилище magento на пустой БД, запускает скрипты сценариев, а ошибка «Неверный идентификатор объекта» прерывает процесс. Стек стека вызовов указывает на мой сценарий установки.
…находясь в поиске…
Если я иду в базу данных, я вижу таблицу eav_entity_type заполненную, но только с 8 типами: тип цитаты не зарегистрирован!
Вот почему Mage_Eav_Model_Entity_Setup-> getEntityTypeId () выдает исключение.
Вопрос:
Я не знаю, почему объект сущности не создается с другими объектами. Как я могу заставить magento регистрировать объект котировки до установки моего модуля? Есть ли альтернатива?
Существует, возможно, связанный с этим вопрос
Начиная с 1.4.x все объекты были перемещены в плоскую структуру. Однако по-прежнему можно использовать интерфейс псевдо EAV класса Mage_Sales_Model_Mysql4_Setup. Ваш код не работает, потому что вы используете Eav setup model вместо Sales one.
Кроме того, по умолчанию все скрипты настройки модуля в приложении / code / local / обрабатываются только после сценариев в приложении / коде / ядре, поэтому вы можете не указывать зависимость от основного модуля.
С уважением, Иван