11

カスタムテーブルに保存するバックエンドモジュールに取り組んでいます。私の問題は、作業中にこのテーブルにフィールドを追加したことです。新しく追加されたフィールドは、model-> Save()関数で保存されません。

モジュールを完全に削除して再インストールしました。気づかなかった内部フィールド数があった場合に備えて、カスタムテーブルを最初から作成できるようにしましたが、それでも同じ結果になりました。

データを追加した後、次のように送信されたものに対してvarダンプを実行します。

$model = Mage::getModel("smsmanager/sms")->addData($post_data)->save();
var_dump($model->getData()); exit;

結果で

array
  'form_key' => string 'RUGN3fruWobAf8CZ' (length=16)
  'message' => string 'adg asdg sad' (length=14)
  'country' => string 'SE' (length=2)
  'telephone' => string '+46707332290' (length=12)
  'type' => int 2
  'id' => string '5' (length=1)

そして、すべてがうまく見えます。ID 5で新しく作成された行を確認すると、次のようになります。

|-----------------------------------------------------------------------------------------------------------|
|id int(11)| type int(11) | telephone varchar(20) | country varchar(2) | message text | date timestamp      |
|-----------------------------------------------------------------------------------------------------------|
| 5        | 2            | +46707332290          | NULL               | adg asdg sad | 2013-03-19 21:44:51 |
|-----------------------------------------------------------------------------------------------------------|

また、「junkfield」のような他のフィールドをデータベーステーブルに手動で挿入して追加しようとしました$post_data['junkfield'] = "hello";が、値としてnullを取得します。

私にとっては、Magentoが私を台無しにしているように見えます。論理に逆らう。誰かが何が間違っている可能性があるかについて別の見解を得ましたか?ああ、忘れる前に、これが私のテーブルレイアウトです:

CREATE TABLE IF NOT EXISTS `sms_entry` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` int(11) NOT NULL,
  `telephone` varchar(20) DEFAULT NULL,
  `country` varchar(2) DEFAULT NULL,
  `message` text,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

何を試しても、国コードは保存されません。また、varcharを2より大きくして、名前をcountry_code(国が予約されている場合など)に切り替えてみました。何も役に立たないようです。

4

3 に答える 3

34

Magentoの管理システムでキャッシュオプションを無効にしても、すべてのキャッシュが無効になるわけではありません。Magentoは、テーブル構造やロケールデータなどを、var/cache/Magentoのルートフォルダの下のディレクトリにキャッシュします(これはそうではありません /var/cache)。

すべてのキャッシュを無効にするには、次の<cache>エントリを次の<global>セクションに追加しapp/etc/local.xmlます。

<config>
    <global>
        ...
        <cache>
            <backend>Zend_Cache_Backend_BlackHole</backend>
        </cache>
        ...

テーブル構造を含むキャッシュをフラッシュするには、管理システムに移動し、[システム]>[キャッシュ管理]>[キャッシュストレージのフラッシュ](Magentoキャッシュのフラッシュではありません!)を選択します。これにより、内のファイルが削除されますvar/cache

コマンドラインからキャッシュをフラッシュすることもできます。

$ sudo rm -fr /path/to/your/magento/installation/var/cache/*
于 2013-03-20T00:12:12.257 に答える
6

私の知る限り、Magentoのキャッシュデータベース構造はどういうわけか。したがって、FlushMagentoCacheだけが役立つはずです

于 2013-03-19T21:54:32.413 に答える
0

+1また、私の場合、REDISキャッシュを使用していたことを忘れてしまったので、これを使用する場合は、このキャッシュも削除することを忘れないでください。

于 2014-10-26T06:26:37.050 に答える