2013-02-01 159 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(); 
      }