C'è un modo per usare il semplice ORM di Magento ( Mage_Core_Model_Abstract
e Mage_Core_Model_Resource_Abstract
) per inserire le righe del modello con una chiave primaria specifica?
Ad esempio, se avessi eseguito quanto segue su un sistema Magento vuoto
Mage::getModel('core/website')->setData(array (
'website_id' => 2,
'code' => 'foo',
'name' => 'Main Website',
'sort_order' => 0,
'default_group_id' => 1,
'is_default' => 1,
));
Mi aspetto una nuova voce nella core_website
tabella. Tuttavia, Magento non fa silenziosamente nulla qui.
Scavando nella risorsa, sembra che io stia fallendo di questo nella classe di risorse del database
#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
}
Poiché il modello ha un ID (ovvero sto inserendo un ID specifico) e poiché _useIsObjectNew
è hard coded su false, la mia richiesta di salvataggio viene sempre instradata al insert
percorso.
C'è un modo per forzare un inserto con i modelli Magento predefiniti? (senza una riscrittura / sostituzione di classe).
Sì, SQL non elaborato è un'opzione, ma quindi la funzionalità dell'evento viene persa.