Existe uma maneira de usar o ORM simples do Magento ( Mage_Core_Model_Abstract
e Mage_Core_Model_Resource_Abstract
) para inserir linhas de modelo com uma chave primária específica?
Por exemplo, se eu executasse o seguinte em um sistema Magento vazio
Mage::getModel('core/website')->setData(array (
'website_id' => 2,
'code' => 'foo',
'name' => 'Main Website',
'sort_order' => 0,
'default_group_id' => 1,
'is_default' => 1,
));
Eu esperaria uma nova entrada na core_website
tabela. No entanto, Magento silenciosamente não faz nada aqui.
Ao pesquisar no recurso, parece que estou entrando em conflito com isso na classe de recursos do banco de dados
#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
}
Como o modelo possui um ID (ou seja, estou inserindo um ID específico) e como _useIsObjectNew
é codificado como falso, minha solicitação de salvamento é sempre roteada para o insert
caminho.
Existe uma maneira de forçar uma inserção com os modelos padrão do Magento? (sem reescrever / substituir classe).
Sim, o SQL bruto é uma opção, mas a funcionalidade do evento é perdida.