Saya telah menambahkan kolom baru ke tabel newsletter_subscriber, 'artists_followed'. di Mage_Newsletter_Model_Subscriber
kelas model yang diganti , saya telah menambahkan fungsi berikut:
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());
}
}
}
semuanya berjalan ok, tidak ada kesalahan yang dilemparkan, tetapi ketika saya melihat di database, kolom baru tidak terisi.
Meja saya adalah:
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';
Aku memutar otak untuk yang ini. Ada ide? Apakah saya kehilangan sesuatu yang sangat jelas?
./n98-magerun cache:flush
:)Jawaban:
Masalah lain adalah:
Zend_Db menembolok struktur tabel database. Jika Anda menambahkan kolom baru, segarkan cache dan Zend tahu untuk mengisi tabel.
Terima kasih james.c.funk
Pastikan Anda menghapus semuanya
var/cache
, ini terjadi, ketika Anda menekan tombol di bagian atas tetapi BUKAN ketika Anda mencentang semua kotak centang dan menyegarkan mereka!sumber
ok, saya membuatnya bekerja dengan mengubah
$this->setArtistsFollowed($artist)
ke$this->setData('artists_followed', $artist)
. Saya tidak yakin mengapa itu berhasil? apa yang terjadi pada magic setter dalam hal ini?sumber
echo get_class($this);
Anda perlu Penyimpanan Flush Cache.
Anda dapat melakukan ini melalui backend:
sumber