2013-02-01 82 views
2

我已經爲所有產品創建了一個類型爲textarea的新IMEI屬性,請參閱圖像。任何人都可以指出一個函數來更新它的值。我有如下代碼。Magento設置新屬性值

$ this belogns to Mage_Sales_Model_Order。

foreach ($this->getAllItems() as $item) { 

       $item->setImei('123'); 

      $item->save(); 
      echo $item->getImei(); 
    } 

我從上次聲明中得到123,但是當我從管理員查看時。它在那裏沒有改變。同樣在哪個表中屬性和值將被存儲,所以我可以從那裏調試。

enter image description here

回答

1

的類型文本的目錄的產品屬性的值存儲在表中catalog_product_entity_text。 SQL將是

select * from catalog_product_entity_text where attribute_id = {insert your attribute id} and entity_id = {insert your product id} 

該查詢將返回系統中每個商店視圖的結果。

您看不到後端中的屬性更改的原因可能是因爲新值設置爲與加載到後端的網站/商店不同。

您已經使用了正確的方法來設置屬性值假設$產品類型Mage_Catalog_Model_Product的:

$item->setImei('123'); 
$item->save(); 
2

什麼類$this->getAllItems()Mage_Catalog_Model_Product

如果不Mage_Catalog_Model_Product然後加載通過標識的產品和保存產品

foreach ($this->getAllItems() as $item) { 
    $product = Mage::getModel('catalog/product')->load($item->getId() or $item->getProductId()) 
    $product->setImei($product->getImei() . '123'); 

    $product->save(); 
} 
+0

$ this belogns to Mage_Sales_Model_Order –

+0

爲什麼要將關於訂單的信息添加到產品中?爲什麼不用db創建一個自定義模塊來跟蹤IMEI#? –

+0

我想將我的產品與第三方網站集成。所以我在這裏添加了一個屬性來跟蹤產品。當用戶從第三方網站點擊手機時,我們正在顯示商店中imei字段中的第一個imei號碼,當購買完成時,我們將不得不從列表中刪除第一個imei號碼,以便下一個號碼可用於出售。但你提出的解決方案也很好,因爲我認爲我們需要分開處理每一個imei號碼。 –

0

繼承人你如何做到這一點是不同的:(顏色=屬性名稱,紅色=屬性的值id)

開始假設你已經有$產品可用。

$attr = $product->getResource()->getAttribute('color'); 

      if ($attr->usesSource()) { 

       $avid = $attr->getSource()->getOptionId('red'); 

       $product->setData('color', $avid); 
       $product->save(); 
      }