Magento 2: Получить продукт Количество Запаса и другие изображения ИнформацияMagento 2: Получить продукт Количество Запаса и Другие изображения Информация
Как получить количество продукта запасов и информации в Magento 2
Magento 2: Получить продукт Количество Запаса и другие изображения ИнформацияMagento 2: Получить продукт Количество Запаса и Другие изображения Информация
Как получить количество продукта запасов и информации в Magento 2
Если мы посмотрим на StockItemRepository класс get
метод хочет параметр $stockItemId
, а не $productId
. Справка:
Я видел много сайтов, где фондовый идентификатор элемента НЕ же, как идентификатор продукта, и мы не должны считать, что это тот же идентификатор.
Для того, чтобы получить эту работу, вы можете использовать класс \Magento\CatalogInventory\Model\Stock\Item
и загружать модель с поля product_id
. Я также знаю поля website_id
и stock_id
, но насколько я знаю, он еще не используется (пока), а также существует в M1.
Это должно выглядеть примерно так (код не тестировался):
<?php
namespace Vendor\Module\Model;
use \Magento\CatalogInventory\Model\Stock\Item;
class Mymodel
{
/**
* @var Item
*/
protected $stockItem;
/**
* Mymodel constructor.
*
* @param Item $stockItem
*/
public function __construct(Item $stockItem)
{
$this->stockItem = $stockItem;
}
/**
* Description
*
* @param $productModel
*/
public function getStockQtyByProductId($productModel)
{
try {
$stockItem = $this->stockItem->load($productModel->getId(), 'product_id');
return $stockItem->getQty();
} catch (\Exception $e) {
echo 'Something went wrong and was not handled: ' . $e->getMessage();
exit;
}
}
}
этот код поможет вам получить количество продукта
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$StockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');
echo $StockState->getStockQty($productId);
?>
На самом деле эта операция должна быть выполнена с использованием \ Magento \ CatalogInventory \ Api \ StockRegistryInterface и здесь мы можем получить \ Magento \ CatalogInventory \ Api \ Data \ StockItemInterface, по идентификатору продукта или по sku, и мы можем использовать кучу полезных методов s, чтобы получить информацию о продукте, связанную с продуктом. Для получения общей информации акций я рекомендую изучить другие сервисные контракты, объявленным в Magento \ CatalogInventory \ Api
Пример использования:
<?php
namespace Test\Test\Model;
class Test
{
protected $_stockRegistry;
public function __construct(\Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry)
{
$this->_stockRegistry = $stockRegistry;
}
public function getStockItem($productId)
{
return $this->_stockRegistry->getStockItem($productId);
}
}
Это работает для меня, как описано в [выпуске GitHub] (HTTPS://github.com/magento/magento2/issues/8279) – nshiff
Как получить это с помощью SQL Query в редакторе SQL? –
Вам не следует использовать прямые запросы 'sql' в вашем коде. –