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}

クエリは、システム内のすべてのストア ビューの結果を返します。

バックエンドで属性への変更が表示されない理由は、おそらく、バックエンドで読み込まれたものとは異なる Web サイト/ストアに対して新しい値が設定されているためです。

$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 に答える