如何将数据写入自定义字段中的“sales_flat_order_payment”表?

时间:2015-12-22 14:19:46

标签: magento magento-1.9

在我的自定义模块中,我更改了表sales_flat_order_paymentsales_flat_quote_payment并添加了两个新字段:

$installer->run("
  ALTER TABLE `{$installer->getTable('sales/quote_payment')}` ADD `ep_entity` VARCHAR( 255 ) NOT NULL ;
  ALTER TABLE `{$installer->getTable('sales/quote_payment')}` ADD `ep_reference` VARCHAR( 255 ) NOT NULL ;

  ALTER TABLE `{$installer->getTable('sales/order_payment')}` ADD `ep_entity` VARCHAR( 255 ) NOT NULL ;
  ALTER TABLE `{$installer->getTable('sales/order_payment')}` ADD `ep_reference` VARCHAR( 255 ) NOT NULL ;
");

在我的模型中,有以下功能可以使客户端重定向到我的自定义成功页面:

public function getOrderPlaceRedirectUrl() {
    return Mage::getUrl('mymodule/mymethod/success', array('_secure' => false));
}

在控制器中,有以下功能:

public function successAction()
{
    $incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
    $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
    $order->setEpReference('123456');
    $order->save(); 
}

问题是sales_flat_order_payment字段中ep_reference表上没有记录任何数据。

如何在自定义字段中将数据写入sales_flat_order_payment表?

我不想在表单中添加自定义字段,付款完成后会自动填充自定义字段。

1 个答案:

答案 0 :(得分:4)

我找到了解决方案:

public function successAction()
{
    $incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
    $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);

    $payment = $order->getPayment();
    $payment->setEpReference('123456');

    $paymentQuote = $quote->getPayment();
    $paymentQuote->setEpReference('123456');
    $paymentQuote->save();

    $order->save(); 
}