Magento设置新的属性值

时间:2013-02-01 15:38:00

标签: php magento

我为所有产品创建了一个类型为textarea的新IMEI属性,请参见图片。任何人都可以指出一个函数来更新它的值。我有以下代码。

$这听说Mage_Sales_Model_Order。

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

                 $item->setImei('123');

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

我从最后一个声明中得到123,但是当我从管理员查看时。它没有改变那里。同样在哪个表中存储属性和值,所以我可以从那里进行调试。

enter image description here

3 个答案:

答案 0 :(得分:2)

$this->getAllItems()是什么类Mage_Catalog_Model_Product

如果不是Mage_Catalog_Model_Product,则按ID加载产品并保存产品

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

     $product->save();   
}

答案 1 :(得分: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}

查询将返回系统中每个商店视图的结果。

您没有在后端看到属性更改的原因可能是因为新值设置的是与后端加载的网站/商店不同的网站/商店。

您已经在使用正确的方法来设置属性值,假设$ item的类型为Mage_Catalog_Model_Product:

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

答案 2 :(得分:0)

以下是不同的方式:(color =属性名称,红色=属性值id)

开始假设您已经有$产品可用。

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

            if ($attr->usesSource()) {

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

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