Я добавил новый столбец в таблицу newsletter_subscriber, «artist_followed». в мой переопределенный Mage_Newsletter_Model_Subscriber
класс модели я добавил следующую функцию:
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());
}
}
}
все работает нормально, никаких ошибок не выдается, но когда я смотрю в базу данных, новый столбец не заполняется.
Мой стол:
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';
Я ломаю голову над этим. Любые идеи? Я что-то упускаю совершенно очевидно?
./n98-magerun cache:flush
:)Ответы:
Другая проблема может быть:
Zend_Db кэшировал структуру таблиц базы данных. Если вы добавите новый столбец, обновите кеш, и Zend знает, как заполнить таблицу.
Спасибо james.c.funk
Убедитесь, что вы удалили все внутри
var/cache
, это происходит, когда вы нажимаете кнопку сверху, а НЕ когда вы устанавливаете все флажки и обновляете их!источник
хорошо, я получил его на работу, изменив
$this->setArtistsFollowed($artist)
на$this->setData('artists_followed', $artist)
. Я не уверен, почему это сработало? что случилось с волшебником в этом случае?источник
echo get_class($this);
Вам необходимо очистить кэш-память.
Вы можете сделать это через бэкэнд:
источник