免责声明:我已经 6 个月没有接触过 Magento。现在就是说,如果您查看 app/code/core/Mage/Sales/sql/sales_setup/ 目录,您将找到如何修改订单表的示例。例如这里是 app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.12-0.9.13.php 的内容(没有标题注释):
$installer = $this;
/* @var $installer Mage_Sales_Model_Mysql4_Setup */
$installer->addAttribute('quote', 'subtotal', array('type'=>'decimal'));
$installer->addAttribute('quote', 'base_subtotal', array('type'=>'decimal'));
$installer->addAttribute('quote', 'subtotal_with_discount', array('type'=>'decimal'));
$installer->addAttribute('quote', 'base_subtotal_with_discount', array('type'=>'decimal'));
$this 是从 app/code/core/Mage/Sales/etc/config.xml 中的内容初始化的,在 config/global/resources/sales_setup/setup/class 之后查看这个类,你会看到它继承自Mage_Eav_Model_Entity_Setup,默认设置类,并覆盖或添加一些方法(例如,用于平面表支持)。
要回答您的第一点(第一个问题),您可以使用此类的 addAttribute() 方法添加列。第二个问题的答案是肯定的,但是您必须在模块的 config.xml 文件中指定要使用 Mage_Sales_Model_Mysql4_Setup 作为安装类。这是通过添加之前在 app/code/core/Mage/Sales/etc/config.xml 中找到的相同 xml 元素来完成的(将 sales_setup 替换为 yourmod_setup)。因此,您转储数据库,通过在 mysql4-install-0.1.0.php 文件中使用 get_class($this) 检查它是否有效,然后恢复您的数据库。然后你继续在你的设置文件中编写,从你在 app/code/core/Mage/Sales/sql/sales_setup 文件中看到的内容中启发自己,它应该没问题!现在是第二点......我不知道......我希望它会自动工作!祝你好运!