独自のデータベーステーブルで動作するMagento(1.7.0.2)で独自のモジュールを作成しました。データベーステーブルは、モジュール内のインストールスクリプトを介して作成され、単純に
$installer = $this;
$installer->startSetup();
$installer->run("
CREATE TABLE IF NOT EXISTS [...]
");
$installer->endSetup();
1 つの列で間違ったデータ型を (int(11)
の代わりにdecimal (11,4)
) 宣言したため、"10.10" の値が "10" として格納されました。
phpmyadminまたは更新スクリプトを介してこの列のデータ型を変更すると、テーブルでデータ型が完全に変更されますが、Magentoは値を古いデータ型として保存するため、値「10.10」が「10.0000」として保存されます。
phpmyadmin を介して「10.10」の値を入力すると、正しく保存されます。しかし、その値を追加しようとすると
Mage::getModel('mymodule/mymodel')->setMyAttribute("10.10")->save();
データベースでは「10.0000」として終了します。
私は以前にこの問題を抱えていましたが、その列の作成時に正しいデータ型を持つ新しい列を追加することによってのみ修正できました。
Magento には、データベースのどこにも見つからないように見える、カスタム テーブルのデータ型用のある種のキャッシュ メカニズムがあるようです。
これに関するヘルプをいただければ幸いです。