Ich habe der Tabelle "newsletter_subscriber" eine neue Spalte hinzugefügt: "artist_followed". In meiner überschriebenen Mage_Newsletter_Model_Subscriber
Modellklasse habe ich die folgende Funktion hinzugefügt:
public function updateSubscriberArtists($email, $artist) {
$this->loadByEmail($email);
if ($this->getId()) {
$this->setArtistsFollowed($artist);
try {
$this->save();
}
catch (Exception $e) {
throw new Exception($e->getMessage());
}
}
}
Alles läuft in Ordnung, es werden keine Fehler ausgegeben, aber wenn ich in die Datenbank schaue, wird die neue Spalte nicht ausgefüllt.
Mein Tisch ist:
CREATE TABLE `mage_newsletter_subscriber` (
`subscriber_id` int(7) unsigned NOT NULL AUTO_INCREMENT,
`store_id` smallint(5) unsigned DEFAULT '0',
`change_status_at` datetime DEFAULT NULL,
`customer_id` int(11) unsigned NOT NULL DEFAULT '0',
`subscriber_email` varchar(150) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL DEFAULT '',
`subscriber_status` int(3) NOT NULL DEFAULT '0',
`subscriber_confirm_code` varchar(32) DEFAULT 'NULL',
`created_at` datetime DEFAULT NULL,
`campaign_source` varchar(255) DEFAULT NULL,
`artists_followed` text,
PRIMARY KEY (`subscriber_id`),
KEY `FK_SUBSCRIBER_CUSTOMER` (`customer_id`),
KEY `FK_NEWSLETTER_SUBSCRIBER_STORE` (`store_id`),
CONSTRAINT `FK_NEWSLETTER_SUBSCRIBER_STORE` FOREIGN KEY (`store_id`) REFERENCES `mage_core_store` (`store_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Newsletter subscribers';
Ich zerbreche mir den Kopf. Irgendwelche Ideen? Vermisse ich etwas völlig Offensichtliches?
./n98-magerun cache:flush
:)Antworten:
Ein weiteres Problem kann sein:
Zend_Db hat die Struktur der Datenbanktabellen zwischengespeichert. Wenn Sie eine neue Spalte hinzufügen, aktualisieren Sie den Cache und Zend kann die Tabelle füllen.
Danke james.c.funk
Stellen Sie sicher, dass Sie alles löschen
var/cache
, dies geschieht, wenn Sie auf die Schaltfläche oben klicken, aber NICHT, wenn Sie alle Kontrollkästchen aktivieren und aktualisieren!quelle
ok, ich habe es zum Laufen gebracht, indem ich zu gewechselt
$this->setArtistsFollowed($artist)
habe$this->setData('artists_followed', $artist)
. Ich bin mir nicht sicher, warum das funktioniert hat? Was ist in diesem Fall mit dem Magic Setter passiert?quelle
echo get_class($this);
Sie müssen den Cache-Speicher leeren.
Sie können dies über das Backend tun:
quelle