Новый столбец, добавленный в таблицу, не сохраняется


Я добавил новый столбец в таблицу подписчиков новостной рассылки_subscriber, "artists_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';

Я ломаю голову над этим вопросом. Есть какие-нибудь идеи? Я упускаю что-то совершенно очевидное?

 8
Author: Amrit Pal Singh, 2013-02-13

3 answers

Другой проблемой может быть:

Zend_Db кэшировал структуру таблиц базы данных. Если вы добавите новый столбец, обновите кэш, и Zend будет знать, как заполнить таблицу.

Даже если у вас отключен весь кэш, структура базы данных и другая информация все равно могут быть кэшированы.

Спасибо Джеймсу.с.фанку

Убедитесь, что вы удалили все в var/cache, это происходит, когда вы нажимаете кнопку вверху, но НЕ тогда, когда вы устанавливаете все флажки и обновляете их!

 41
Author: Fabian Blechschmidt, 2016-06-13 14:19:42

Хорошо, я заставил его работать, изменив $this->setArtistsFollowed($artist) на $this->setData('artists_followed', $artist). хотя я не уверен, почему это сработало? что случилось с волшебным сеттером в этом случае?

 2
Author: Laura, 2013-02-13 21:45:06

Вам необходимо Очистить хранилище кэша.

Вы можете сделать это через серверную часть:

Система -> Управление кэшем -> Нажмите кнопку "Очистить хранилище кэша".

 1
Author: CesarScout, 2017-09-26 05:02:43