Magento 2 Не Удалось Получить Простое Количество Продукта
Я не могу получить количество простого продукта Кто-нибудь может помочь, пожалуйста.
Я пробовал:
$product = $block->getAllowProducts();
foreach ($product as $child) {
print_r($child->getQty());
print_r($child);
}
$child->getQty()
ничего не возвращает, и, похоже, его тоже нет в массиве $child
Array
(
[entity_id] => 1
[attribute_set_id] => 4
[type_id] => simple
[sku] => t-shirt-red
[has_options] => 0
[required_options] => 0
[created_at] => 2017-10-24 10:05:40
[updated_at] => 2017-10-24 10:05:40
[parent_id] => 4
[catalog_rule_price] =>
[name] => t-shirt-red
[url_key] => t-shirt-red
[price] => 99.9900
[weight] => 100.0000
[color] => 4
[status] => 1
[tax_class_id] => 2
[is_featured] => 1
[media_gallery] => Array
(
[images] => Array
(
)
[values] => Array
(
)
)
[tier_price] => Array
(
)
[salable] => 1
)
Любая помощь, пожалуйста, цените. Спасибо!
1
Author: Juliano Vargas, 2017-10-24
2 answers
Вы не можете напрямую получить количество продукта. Вам нужно позвонить StockStateInterface
, чтобы узнать количество товара.
Для получения количества на основе идентификатора продукта,
public function __construct(\Magento\CatalogInventory\Api\StockStateInterface $stockState)
{
$this->stockState = $stockState;
}
public function getOptionsQty($currentProduct, $allowedProducts)
{
$product = $block->getAllowProducts();
foreach ($product as $child) {
$productId = $child->getId();
$qty = $this->stockState->getStockQty($productId,1);
echo $qty;
print_r($child);
}
}
Использование непосредственно objectmanager,
$product = $block->getAllowProducts();
foreach ($product as $child) {
$productId = $child->getId();
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$stockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');
$qty = $stockState->getStockQty($productId,1);
echo $qty;
print_r($child);
}
1
Author: Rakesh Jesadiya, 2017-10-26 04:51:57
Вы можете использовать это, чтобы получить количество.
$products = Mage::getModel('catalog/product')
->getCollection()
//->addAttributeToSelect('*')
->addAttributeToSelect(array('name', 'thumbnail', 'weight' ,'price','description'))
->joinField('qty',
'cataloginventory/stock_item',
'qty',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left');
foreach ($products as $product) {
$p['products'][] = array(
'id' => $product->getId(),
'sku' => $product->getSku(),
'name' => $product->getName(),
'description' => $product->getDescription(),
'weight' => $product->getWeight(),
'created at' => $product->getCreatedAt(),
'pirce' => Mage::helper('core')->currency($product->getPrice(), true, false), //." ".$currencyCode,
//get qty
'qty' => $product->getQty(),
);
}
1
Author: Vivek, 2017-10-24 10:19:44