5

カスタムモジュールを作成しています。

製品の数量を更新する機能をテストしています。

必要最低限​​のmagentoモジュールを作成し、indexController.php内のコードでテストを開始しました。コードは次のとおりです。

public function indexAction() {

    //Just grabbing sku# 62701 for testing...
    $tempProduct = Mage::getModel('catalog/product')->loadByAttribute('sku', 62701 );

    $stockData['qty'] = 300;
    $tempProduct->setStockData($stockData);

    $tempProduct->save(); 

}

そこに最後の行があると、エラーが発生します。

エラーログから:

a:5:{i:0; s:46:"無効なメソッドVarien_Object :: save(Array()

スタックトレースが続きます...

どんな助けでもありがたいです、ありがとう。

4

4 に答える 4

4

ここで、私のシナリオで機能すると思われるデータを保存する方法を見つけました(なぜ機能したのかわかりません): https://stackoverflow.com/a/7608195/1110880

それを機能させたコードは次のとおりです。

    $productId = $tempProduct->getId();
    $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
    $stockItem->setData('qty', $qty);

    $stockItem->save();

これが誰かに役立つことを願っています。

于 2012-09-24T21:22:16.913 に答える
1

私はおそらく何か間違ったことをしていますが、同じ問題があり、これが役に立ちました:

$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId());
$stockItem->setProductId($product->getId());
$stockItem->setStockId(Mage_CatalogInventory_Model_Stock::DEFAULT_STOCK_ID);
于 2013-08-12T09:44:18.353 に答える
1

潜在的な問題が 2 つあります。

  1. loadByAttribute('sku', 62701 )返品できる商品は 1 つだけですか? (このエラー、人々が一度に複数のものを更新しようとしたときに表示されました。)
  2. $stockData定義されていません。少なくとも、それを定義する方が安全です。

次のようなものが欠けているようです。

$stockData = $tempProduct->getStockData();
于 2012-09-24T20:46:33.240 に答える