2011-09-09 64 views
1

我最近做了一个模块,它根据我导入的运输成本数据计算每个订单和order_item的实际毛利。我通过向sales_flat_order表和sales_flat_order_item表添加了2列。这似乎很好,直到我意识到当我保存导入的数据时,它也更新了值。由于这是所有订单的首次进口,他们现在都报告今天已更新。这是抛出报告和其他运输软件与它同步。Magento订单表:自定义列

这使我2个问题:

  1. 也加入到现有的表中的列(在这种情况下,销售表)一个主要的NO-NO?
  2. 如果不是,有没有办法设置不会增加数值的数据,更新值为updated_at

如果有帮助,实际写入数据的代码位于我的IndexController.php文件中。它通过收集订单和这些订单中的项目进行循环,并使用$order->setGrossMargin($orderGM)->save();之类的设置来设置必要的值。我想这是打电话给save()这样做,但我不确定解决这个问题的正确方法。与此同时,我正在研究一种解决方案,在该解决方案中,我将数据导入到自定义表格中,并在必要时仅从销售表格中读取数据。无论哪种方式,这是一个很好的锻炼:)

布赖恩

回答

1

而不是调用save(),你尝试:

$order->getResource()->saveAttribute('gross_margin')

+0

不,我没有。我试过了,它抛出了一个异常,因为'saveAttribute'的参数1必须是'Mage_Core_Model_Abstract'。看看函数和其他用例,似乎我可以传递我调用'saveAttribute'的对象。所以,我尝试了这一点,它的工作原理:'$ order-> getResource() - > saveAttribute($ order,'gross_margin');'' – BrianVPS