如何在自定义字段中向"sales_flat_order_payment"table写入数据?

How to write data to "sales_flat_order_payment" table in a custom field?

在我的自定义模块中,我更改了 table 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(); 
}

问题是ep_reference字段中的sales_flat_order_paymenttable没有记录数据。

如何在自定义字段中向sales_flat_order_paymenttable写入数据?

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

我找到了解决方案:

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