我在 Magento (1.7.0.2) 中编写了自己的模块,该模块适用于它自己的数据库表。数据库表是通过模块中的安装脚本创建的,只需执行
$installer = $this;
$installer->startSetup();
$installer->run("
CREATE TABLE IF NOT EXISTS [...]
");
$installer->endSetup();
我在一列中犯了一个错误,在其上声明了错误的数据类型(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 对自定义表的数据类型有某种兑现机制,我似乎在数据库中的任何地方都找不到。
对此的任何帮助将不胜感激!