カスタムテーブルに保存するバックエンドモジュールに取り組んでいます。私の問題は、作業中にこのテーブルにフィールドを追加したことです。新しく追加されたフィールドは、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
(国が予約されている場合など)に切り替えてみました。何も役に立たないようです。