¿Hay alguna manera de usar el ORM simple de Magento ( Mage_Core_Model_Abstracty Mage_Core_Model_Resource_Abstract) para insertar filas de modelo con una clave primaria específica?
Por ejemplo, si ejecuté lo siguiente contra un sistema Magento vacío
Mage::getModel('core/website')->setData(array (
'website_id' => 2,
'code' => 'foo',
'name' => 'Main Website',
'sort_order' => 0,
'default_group_id' => 1,
'is_default' => 1,
));
Esperaría una nueva entrada en la core_websitetabla. Sin embargo, Magento silenciosamente no hace nada aquí.
Excavando en el recurso, parece que estoy cayendo en conflicto con esto en la clase de recurso de base de datos
#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
}
Debido a que el modelo tiene una identificación (es decir, estoy insertando una identificación específica), y debido a que _useIsObjectNewestá codificado como falso, mi solicitud de guardar siempre se enruta a la insertruta.
¿Hay alguna forma de forzar una inserción con los modelos Magento predeterminados? (sin una reescritura / reemplazo de clase).
Sí, el SQL sin formato es una opción, pero luego se pierde la funcionalidad del evento.