在事件观察器中保存产品的属性

时间:2013-01-18 11:48:32

标签: magento

我使用的是magento 1.7 我正在尝试用magento创建一个广告模块 用户可以将广告作为产品发布,当他支付订单时,我想启用广告(产品)。 为此,我听sales_order_invoice_save_after。一切正常但当我尝试在事件监听器中保存产品时,save函数会抛出异常:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails

我的功能如下:

public function onInvoiceSaveAfter(Varien_Event_Observer $observer)
{
    $event = $observer->getEvent();
    $invoice = $event->getInvoice();
    switch($invoice->getState())
    {
       case Mage_Sales_Model_Order_Invoice::STATE_PAID :
       {

          $order = $invoice->getOrder();
          $items = $order->getAllItems();

          //Update the product
          $product = Mage::getModel('catalog/product')->load($item->getEntityId());
          $product->setAdEndDate('2015-10-10 00:00:00');
          $product->getResource()->saveAttribute($product, 'ad_end_date'); //Throws exception
        }
}

有人可以帮我吗? 我怎样才能做到这一点?

0 个答案:

没有答案