Magento – Update a custom column of sales_flat_order table after order complete in magento

event-observermagento-1.9sales-order

I have a custom column used in sales_flat_order in my code and I just want to update a column value of this table when the order is complete. I have used the event sales_order_save_after and below is the code:

    public function salesOrderSaveAfter(Varien_Event_Observer $observer) {
    $order = $observer->getEvent()->getOrder();
    $orderId = $order->getId();

    $Incid=$order->getIncrementId();

    if ($order->getState() == Mage_Sales_Model_Order::STATE_COMPLETE) {


        $con=Mage::getSingleton('core/resource');
        $write=$con->getConnection('core_write');

        $query= "update `sales_flat_order` set `vorder_payment_state` = 2 where `entity_id`='.$orderId.'";
        $write->query($query);

    }
    }

the column value is not updated.

Best Answer

$resource = Mage::getSingleton('core/resource');
$writeConnection = $resource->getConnection('core_write');
$themeTable = $resource->getTableName('sales_flat_order');
$sql = "INSERT INTO " . $themeTable ."(field1, field2) VALUES ('1', 'NameABC')";//insert only
$sql1 = "UPDATE" . $themeTable . "SET vorder_payment_state = 2 WHERE entity_id = ".$orderId;//update
$writeConnection->query($sql);//insert
$writeConnection->update($sql1);//update