添加到表的新列未保存


8

我在newsletter_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';

我正在为此绞尽脑汁。有任何想法吗?我错过了完全显而易见的东西吗?


我有同样的问题。尽管模型已正确设置了该字段,但在SalesRule中添加了一个属性(列),但从未更新数据库。
Vicary 2014年

如果有人使用n98-magerun,这可能会有所帮助:./n98-magerun cache:flush:)
Attila Naghi

Answers:


41

另一个问题可能是:

Zend_Db缓存了数据库表的结构。如果添加新列,请刷新缓存,并且Zend知道可以填充表。

即使您禁用了所有缓存,数据库结构和其他信息也可能仍被缓存。

谢谢james.c.funk

确保删除了中的所有内容var/cache,这是在您单击顶部的按钮时发生的,但是在您选中所有复选框并刷新它们时则不会删除!


您是说magento快取吗?还是有另一个仅zend的缓存?
劳拉

我有同样的问题,但是清除缓存对我不起作用。
Vicary 2014年

3
修复了我面临的问题,仅我需要刷新缓存存储和Magento存储!
NathanielR 2015年

1
Thnx @FabianBlechschmidt,这让我发疯
BlueC

1
请停止在评论中感谢我,但要投票。我们需要评论部分才能进行实际评论:-)
Fabian Blechschmidt

2

好的,我通过更改$this->setArtistsFollowed($artist)为使它起作用$this->setData('artists_followed', $artist)。我不知道为什么行得通吗?在这种情况下,魔术师发生了什么事?


“ echo typeof($ this);”是什么意思 返回?
philwinkle

这是一种针对男性的方法吗?我收到致命错误:使用此函数时,调用未定义的函数typeof()。
劳拉

1
哇。我的大脑在Java echo get_class($this);
语言上大笑

它正在返回我覆盖的类。奇怪的是,我在此表中添加了另一个字段,并且使用魔术设置器可以在其中工作,但在这种情况下不行。
劳拉

1

您需要刷新缓存存储。

您可以通过后端执行此操作:

系统->缓存管理->单击“刷新缓存存储”按钮。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.