Existe-t-il un moyen d'utiliser l'ORM simple de Magento ( Mage_Core_Model_Abstract
et Mage_Core_Model_Resource_Abstract
) pour insérer des lignes de modèle avec une clé primaire spécifique?
Par exemple, si j'ai exécuté ce qui suit sur un système Magento vide
Mage::getModel('core/website')->setData(array (
'website_id' => 2,
'code' => 'foo',
'name' => 'Main Website',
'sort_order' => 0,
'default_group_id' => 1,
'is_default' => 1,
));
Je m'attendrais à une nouvelle entrée dans le core_website
tableau. Cependant, Magento ne fait rien en silence ici.
En creusant dans la ressource, il semble que je tombe dans la classe de ressources de base de données
#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
}
Parce que le modèle a un identifiant (c'est-à-dire que j'insère un identifiant spécifique), et parce qu'il _useIsObjectNew
est codé en dur sur faux, ma demande de sauvegarde est toujours acheminée vers le insert
chemin.
Existe-t-il un moyen de forcer une insertion avec les modèles Magento par défaut? (sans réécriture / remplacement de classe).
Oui, le SQL brut est une option, mais la fonctionnalité d'événement est alors perdue.