我不确定Magento为何一切如此困难。我正在尝试以编程方式更新产品数量。
try{
$product = $this->productRepository->get($sku);
$product->setStockData( [
'qty' => $quantity
] );
$this->productRepository->save($product);
} catch (NoSuchEntityException $e) { }
这似乎很好,但是,当我进入管理员页面并查看产品列表时,所有已更新产品的缩略图都将丢失。
如果我进入该产品并查看其图像,它们就全部存在,并且缩略图图像上仍然贴有标签/角色“缩略图”。
答案 0 :(得分:0)
正确的方法是使用StockRegistryInterface
/**
* @var StockRegistryInterface
*/
protected $stockRegistry;
/**
* Inventory constructor.
* @param StockRegistryInterface $stockRegistry
*/
public function __construct(
StockRegistryInterface $stockRegistry
)
{
$this->stockRegistry = $stockRegistry;
}
使用上面的代码,您可以使用以下代码:
$stockItem = $this->stockRegistry->getStockItemBySku($sku);
$stockItem->setQty($qty);
$this->stockRegistry->updateStockItemBySku($sku, $stockItem);
此代码不会调用项目中可能没有的无关的观察者或插件,并且不会破坏缩略图