Magento在sales_flat_order表的自定义列中添加值

时间:2016-11-02 13:03:55

标签: magento

您好我在 sales_flat_order 表中创建了一个名为 final_shipping_amount 的自定义列。当我加载订单时,它显示我的自定义列。我试图在我的自定义列中添加值,但是这里没有添加值是我的代码。

$final_shipping = "1.33"
$orderIid = $this->getRequest()->getParam('id');
$orderDataShip = Mage::getModel('sales/order')->load($orderIid);
$orderDataShip->setFinalShippingAmount($final_shipping);
$orderDataShip->save();

它没有保存价值。我也试过这种方式,但也没有保存

$final_shipping = "1.33"
$orderIid = $this->getRequest()->getParam('id');
$orderDataShip = Mage::getModel('sales/order')->load($orderIid);
$orderDataShip->setData('final_shipping_amount' , $final_shipping);
$orderDataShip->save();

但它不起作用。

2 个答案:

答案 0 :(得分:0)

在您的模块的config.xml文件中,用户此事件

<sales_order_place_before>
            <observers>
                <Yournamespace_YourModuleName_model_observer>
                    <type>singleton</type>
                    <class>Yournamespace_YourModuleName_Model_Observer</class>
                    <method>example</method>
                </Yournamespace_YourModuleName_model_observer>
            </observers>
</sales_order_place_before>

并在您的Observer文件中

public function example($observer) {
        $final_shipping = "1.33";
        $event = $observer->getEvent();
        $order = $event->getOrder();


        $items = $order->getQuote()->getAllItems(); 
        //Mage::log($items->debug());

        $orderdata = Mage::getModel('sales/order')->load($order->getEntityId());
        $mn = $orderdata->setData('final_shipping_amount', $final_shipping );
        $orderdata->save();

    }

可能它可以帮到你。

答案 1 :(得分:0)

向magento添加属性并不是那么简单。

首先,当您保存订单实体时,magento会将其保存到EAV结构而不是平面订单表。

你需要告诉magento你已经首先添加了一个新属性,例如,有关于如何执行此操作的大量信息:

http://stackoverflow.com/questions/12936470/adding-a-new-attribute-to-order-in-magento

完成后,magento将会知道您添加的属性,并且应该正确保存。