Чи є спосіб використовувати простий ORM Magento ( Mage_Core_Model_Abstract
і Mage_Core_Model_Resource_Abstract
) для вставки рядків моделей із певним первинним ключем?
Наприклад, якщо я запустив наступне проти порожньої системи 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
таблиці. Однак Магенто мовчки тут нічого не робить.
Копаючись у ресурсі, схоже, я потрапляю до цього у класі ресурсів бази даних
#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
, що важко закодовано до помилки, мій запит на збереження завжди спрямовується на insert
шлях.
Чи є спосіб змусити вставити за допомогою стандартних моделей Magento? (без перезапису / заміни класу).
Так, необроблений SQL - це варіант, але тоді функціональність подій втрачається.