¿Hay alguna manera de usar el ORM simple de Magento ( Mage_Core_Model_Abstract
y 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_website
tabla. 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 _useIsObjectNew
está codificado como falso, mi solicitud de guardar siempre se enruta a la insert
ruta.
¿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.