Есть ли способ использовать простой ORM ( Mage_Core_Model_Abstract
и Mage_Core_Model_Resource_Abstract
) Magento для вставки строк модели с определенным первичным ключом?
Например, если я запустил следующее против пустой системы Magento
Mage::getModel('core/website')->setData(array (
'website_id' => 2,
'code' => 'foo',
'name' => 'Main Website',
'sort_order' => 0,
'default_group_id' => 1,
'is_default' => 1,
));
Я ожидаю новую запись в core_website
таблице. Тем не менее, Magento молча ничего не делает здесь.
Копаясь в ресурсе, похоже, что я не согласен с этим в классе ресурсов базы данных
#File: app/code/core/Mage/Core/Model/Resource/Db/Abstract.php
if (!is_null($object->getId()) && (!$this->_useIsObjectNew || !$object->isObjectNew())) {
//update stuff here
}
else
{
//insert stuff here
}
Поскольку модель имеет идентификатор (т. Е. Я вставляю конкретный идентификатор), и поскольку _useIsObjectNew
она жестко запрограммирована на false, мой запрос на сохранение всегда направляется в insert
путь.
Есть ли способ принудительной вставки с моделями по умолчанию Magento? (без переписывания / замены класса).
Да, необработанный SQL - вариант, но тогда функциональность событий теряется.