2013-04-08 22 views
0

我試圖更新customer_entity的Magento中的自定義字段,我用下面的代碼:在magento的SetData()中出錯?

$customer = Mage::getModel('customer/customer')->load($customerId); 

    print_r($customer->getData()); 
    try { 
        $customer->setData('field', $flag); 
     $insertId = $customer->save()->getId(); 
      echo "Data successfully inserted. Insert ID: ".$insertId; 
         print_r($customer->getData()); 
     } catch (Exception $e){ 
     echo $e->getMessage(); 
     } 

現在,我不知道爲什麼它不是在一個數據庫中保存,當我寫的日誌客戶數據有更新的值,但是當我嘗試在數據庫中看到它沒有反映。

任何想法?

編輯:

$write = Mage::getSingleton("core/resource")->getConnection("core_write"); 
     $sql = "update `customer_entity` set `field` = ".$flag." where`entity_id` =".$customerId; 
     $write->query($sql); 

此代碼正在與魅力,但在頂部上面的代碼nention確實工作。 任何機構有任何想法嗎?

+0

我有同樣的問題。你有沒有注意到setData()可以和默認的magento數據庫字段一起工作。例如,我已將2個字段添加到'customer_entity'表中。我可以使用ORM插入所有其他字段,但不能創建我創建的兩個字段。我必須爲這些使用SQL。 :( – 2013-12-17 10:35:49

+0

你解決了你的問題,我有同樣的問題,我不能從innoDB更改爲MyISAM,因爲外鍵。 – MomAndDad 2017-11-29 10:38:02

回答

0

嘗試清除緩存一次,並從magento管理員重新索引!希望它可以工作

+0

對不起,我已經嘗試過,但它不工作 – chanz 2013-04-08 11:36:26

0

首先檢查以下內容 1.檢查您是否在資源模型中的config.xml中定義了數據庫表。 2.獲取$ flag的值並檢查該字段是否存在。

0

第一步: - 檢查config.xml文件中的資源表名,清除/ var文件夾內的緩存文件夾並檢查。

第2步: - 如果第1步不工作比重新索引您的項目和檢查。步驟3: - 如果步驟1和步驟2不起作用,則檢查表引擎類型,如果它是InnoDB,則將其更改爲MyISAM並進行檢查。

更多信息click here