Ich entwickle ein benutzerdefiniertes Magento-Modul, das eine Liste von E-Mail-Adressen in einer benutzerdefinierten Tabelle speichern muss. Der entsprechende Code sieht wie folgt aus:
foreach($this->getNewSubscriptionsForAPI() as $email){
$requestModel->setEmail($email);
$requestModel->setAction('subscribe');
$requestModel->setPosted(date('Y-m-d H:i:s'));
$requestModel->save();
}
Die getNewSubscriptionsForAPI()
Methode gültige Daten zurückgibt, und die $requestModel
ist ein gültiges Magento-Modell.
Wenn diese Schleife ausgeführt wird, überschreibt der Datenbankadapter jedoch einfach jeden Datensatz über dem vorherigen. Dh, wenn ich in phpMyAdmin wiederholt auf 'browse' klicke, kann ich verschiedene E-Mail-Adressen sehen, die in die Datenbank geschrieben werden, aber immer in derselben Zeile, wobei der vorherige Eintrag überschrieben wird. Das ID-Feld ist korrekt eingerichtet: als Primärschlüssel auf AUTO_INCREMENT gesetzt und als ID-Feld im Ressourcenmodell gekennzeichnet.
Interessant ist, dass ich die Schleife oben verwenden kann, um aufeinanderfolgende Datensätze in der Kern newsletter/subscriber
Tabelle ohne Problem zu schreiben.
konnte ich natürlich, einfach unset()
das Modell und bekommen es wieder aus dem Mage::getModel()
bei jedem Zyklus der Schleife, aber das (a) scheint äußerst verschwenderisch, und (b) verdirbt meine Dependency Injection-Setup für den Test (wo ich nicht möchte, dass der Code seine eigenen Modelle instanziiert, sondern die verwendet, die ich an ihn weitergebe).
Kann mir jemand in die richtige Richtung zeigen?
Warum wurde das abgelehnt ?! – MJA