Gibt es eine Möglichkeit, mit Magentos einfachem ORM ( Mage_Core_Model_Abstract
und Mage_Core_Model_Resource_Abstract
) Modellzeilen mit einem bestimmten Primärschlüssel einzufügen?
Zum Beispiel, wenn ich folgendes gegen ein leeres Magento-System ausgeführt habe
Mage::getModel('core/website')->setData(array (
'website_id' => 2,
'code' => 'foo',
'name' => 'Main Website',
'sort_order' => 0,
'default_group_id' => 1,
'is_default' => 1,
));
Ich würde einen neuen Eintrag in der core_website
Tabelle erwarten . Magento tut hier jedoch nichts.
Es sieht so aus, als würde ich in der Datenbank-Ressourcenklasse in die Quere kommen
#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
}
Da das Modell eine ID hat (dh, ich gebe eine bestimmte ID ein) und _useIsObjectNew
fest auf false codiert ist, wird meine Speicheranforderung immer an den insert
Pfad weitergeleitet.
Gibt es eine Möglichkeit, eine Einfügung mit den Standard-Magento-Modellen zu erzwingen? (ohne ein Umschreiben / Klassenersatz).
Ja, Raw SQL ist eine Option, aber dann geht die Ereignisfunktionalität verloren.