2

我为所有产品创建了一个 textarea 类型的新 IMEI 属性,如图所示。谁能指出一个函数来更新它的值。我有如下代码。

$this 属于 Mage_Sales_Model_Order。

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

                 $item->setImei('123');

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

我从最后一条语句中得到 123,但是当我从管理员查看时。它在那里没有改变。属性和值也将存储在哪个表中,所以我可以从那里调试。

在此处输入图像描述

4

3 回答 3

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();   
}
于 2013-02-01T15:47:23.350 回答
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();
于 2013-02-01T15:46:58.767 回答
0

继承人如何以不同的方式进行操作:(颜色 = 属性名称,红色 = 属性值 id)

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

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

            if ($attr->usesSource()) {

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

               $product->setData('color', $avid);
               $product->save();
            }
于 2013-05-31T11:06:49.137 回答