0

我已经通过执行成功安装了 EAV 属性$installer->addAttribute('order', 'field', etc)。当订单保存在 sales_order_save_before / sales_order_save_after 事件中时,我也成功地运行了一个观察者。现在我尝试将数据放入观察者的领域

$observer->getOrder()->setMyField('someuniquestring'); 

我在保存之前和之后尝试过这样做,在这种情况下我添加

$observer->getOrder()->getResource()->save($order);

搜索我的整个数据库后,唯一的字符串在任何表中都不存在。此外,如果我使用 getMyField() 并将其回显到观察者的屏幕上,并且 die() 它会显示我设置的值。

有关如何将其保存到数据库中的任何帮助?

4

1 回答 1

0

经过一段时间的调试,我找到了自己问题的答案。

在某个时间点,magento 改变了应将数据字段添加到数据库中的订单模型的方式。以前使用 EAV 字段,但现在 magento 只修改平面表本身。所以在我的安装脚本中我只是做

$installer->getConnection->addColumn($installer->getTable('sales_flat_order', 'site_license_id', 'int(1) ...');

然后在保存之前在我的观察者中添加 $observer->getEvent()->getOrder()->setMyField($myval);

仅此而已。

于 2011-09-22T21:12:06.097 回答