magento 2.1.5 如何以编程方式获取产品禁用状态

magento 2.1.5 how to get product disabled status programmatically

我将以编程方式获取产品的 enabled/disabled 状态。 现在,我们通过这段代码得到了产品实例。

 <?php $_product = $_item->getProduct(); ?>

此外,使用以下代码部分,我们可以获得产品库存信息。

 <?php $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
      $StockState = $objectManager->get('\Magento\CatalogInventory\Api\StockStateInterface');
      $product_is_stock = $StockState->getStockQty($_product->getId(), $_product->getStore()->getWebsiteId()); ?>

但是,有什么解决方案可以在 Magento 2.1 上从 $_product 获取产品状态吗?

经过几个小时的调试,我找到了解决这个问题的好方法。

<?php $_product = $_item->getProduct(); 

 $product_status = $_product->getStatus();

在我的示例中,我使用 $_product->getStatus().

将停用产品的状态作为值
<?php if (($product_is_stock == 0) || ($_product->getStatus() == 2)): ?>

为确认此操作,我使用这些 sql 命令停用了产品。

SELECT entity_id FROM `catalog_product_entity_int`
WHERE attribute_id = (
    SELECT attribute_id FROM `eav_attribute`
    WHERE `attribute_code` LIKE 'status'
) AND `catalog_product_entity_int`.value = 2

最后,我确认停用产品的状态只是 2,而不是 0。

已启用产品的状态仅为 1。

希望我的例子能帮助到很多开发者。

查看magento core,我们可以发现enabled = 1 and disabled = 2.

Magento\Catalog\Model\Product\Attribute\Source\Status.php

 /**
 * Product Status values
 */
const STATUS_ENABLED = 1;

const STATUS_DISABLED = 2;

这是来自magento 2.3.0的核心代码

使用核心卢克!