2016-11-02 26 views
0

您好我已經在中製作了自定義列sales_flat_order表名爲final_shipping_amount。當我加載訂單時顯示我的自定義列。我試圖在我的自定義列中添加值,但它不在其中添加值是我的代碼。Magento在sales_flat_order表的自定義列中添加值

$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(); 

但它不工作。

+0

你在事件中使用這段代碼嗎? – Vky

+0

我在裝運表單上使用此代碼提交。 – OBAID

+0

嘗試使用'sales_order_place_before'事件並在您的代碼中爲我工作的觀察者函數 – Vky

回答

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> 

而在你的觀察文件

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(); 

    } 

可能是它可以幫助你。

0

將屬性添加到magento並不那麼簡單。

首先,當您保存訂單實體時,magento會將其保存到EAV結構中,而不是平面訂單表。

你需要告訴Magento的你第一次添加一個新的屬性,有信息就如何做到這一點,例如負載:

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

一旦你這樣做的Magento都知道的您添加的屬性,並應正確保存。

相關問題