Kolom baru ditambahkan ke tabel tidak menyimpan


8

Saya telah menambahkan kolom baru ke tabel newsletter_subscriber, 'artists_followed'. di Mage_Newsletter_Model_Subscriberkelas 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?


Saya memiliki masalah yang sama. Menambahkan atribut (kolom) di SalesRule, meskipun model memiliki bidang yang ditetapkan dengan benar, itu tidak pernah memperbarui database.
Vicary

Jika seseorang menggunakan n98-magerun, mungkin ini bisa membantu: ./n98-magerun cache:flush:)
Attila Naghi

Jawaban:


41

Masalah lain adalah:

Zend_Db menembolok struktur tabel database. Jika Anda menambahkan kolom baru, segarkan cache dan Zend tahu untuk mengisi tabel.

Bahkan jika semua cache Anda dinonaktifkan, struktur basis data dan info lainnya mungkin masih di-cache.

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!


maksud Anda cache magento? atau apakah ada cache lain yang hanya zend?
Laura

Saya memiliki masalah yang sama, tetapi membersihkan cache tidak berhasil untuk saya.
Vicary

3
Memperbaiki masalah yang saya hadapi, hanya saya yang perlu menyiram Cache Storage dan Magento Storage!
NathanielR

1
Thnx @FabianBlechschmidt ini membuatku gila
BlueC

1
Tolong berhenti mengucapkan terima kasih pada saya dalam komentar tetapi sebaliknya upvote. Kami membutuhkan bagian komentar untuk komentar aktual :-)
Fabian Blechschmidt

2

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?


Apa artinya "echo typeof ($ this);" kembali?
philwinkle

Apakah itu metode khusus magento? Saya mendapatkan kesalahan fatal: Panggil ke function typeof () yang tidak terdefinisi saat saya menggunakannya.
Laura

1
Wow. Otak saya digoreng di Javascript lol :) Maaf, coba ini:echo get_class($this);
philwinkle

itu mengembalikan kelas saya yang ditimpa. itu aneh, saya memiliki bidang lain yang saya tambahkan ke tabel ini, dan menggunakan setter ajaib bekerja di sana, hanya saja tidak dalam hal ini.
Laura

1

Anda perlu Penyimpanan Flush Cache.

Anda dapat melakukan ini melalui backend:

Sistem -> Manajemen Cache -> Klik tombol 'Penyimpanan Cache Cush'.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.