0

独自のデータベーステーブルで動作する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 には、データベースのどこにも見つからないように見える、カスタム テーブルのデータ型用のある種のキャッシュ メカニズムがあるようです。

これに関するヘルプをいただければ幸いです。

4

0 に答える 0