Load Product Qty by sku in Magento 2 Controller
سؤال
public function execute()
{
// Product Colletion
$collection = $this->_productCollectionFactory->create();
$collection->addAttributeToSelect(['name', 'special_price', 'entity_id']);
$productColl = [];
foreach ($collection as $product) {
// check simple products only
if ($product->getTypeId() == 'simple') {
$productX = $this->_productRepository->get($product->getSku());
$stockItem = $productX->getExtensionAttributes()->getStockItem();
$qty = $stockItem->getQty();
print_r($qty);
$sku = $product->getSku();
// code for Qty
}
}
}
How to get product Qty using SKU In Controller
المحلول
First load product by sku:
$product = $this->_productRepository->get($sku);
To get stock qty use this:
$StockState->getStockQty($product->getId(), $product->getStore()->getWebsiteId());
Where $stockState
is the instance of \Magento\CatalogInventory\Api\StockStateInterface
نصائح أخرى
Get the quantity by using the following code
protected $_stockRepository;
protected $_product;
public function __construct(
Magento\CatalogInventory\Model\Stock\StockItemRepository $stockRepository,
Magento\Catalog\Model\Product $product
) {
$this->_stockRepository= $stockItem;
$this->_product = $product;
}
And use like this
$productId=$this->_product->getIdBySku('Product_SKU');
if($productId){
$productStock = $this->_stockRepository->get($productId);
$productQty = $productStock->getQty();
}
لا تنتمي إلى magento.stackexchange