¿Cómo obtener solo productos deshabilitados en Magento 2 Controller?

Aug 21 2020

Cómo obtener solo productos deshabilitados En el controlador Tengo todos los productos

<?php
namespace Mageplaza\HelloWorld\Controller\Index;

use Magento\Catalog\Model\Product\Attribute\Source\Status;
use Magento\Catalog\Model\ResourceModel\Product\Action;

class Index extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory; private $scopeConfig;
protected $_productCollectionFactory; private $productAction;

public function __construct(
Action $productAction, \Magento\Framework\App\Action\Context $context,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\View\Result\PageFactory $pageFactory,
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory ){ $this->productAction = $productAction; $this->_pageFactory = $pageFactory; $this->scopeConfig = $scopeConfig; $this->_productCollectionFactory = $productCollectionFactory; return parent::__construct($context);
}

public function execute()
{   
$product_ids = []; $onlydisproduct = $this->_productCollectionFactory->create(); $onlydisproduct->addAttributeToSelect('*');
$onlydisproduct->setFlag('has_stock_status_filter', false); foreach ($onlydisproduct as $key => $value) {
    $product_ids[] = $value->getId();
}
//print_r($product_ids); die('aaaa'); //return $this->_pageFactory->create();
}
}

Captura de pantalla del producto

Estoy aplicando $ onlydisproduct-> setFlag ('has_stock_status_filter', false); pero aún obteniendo todos los productos.

Respuestas

RohanHapani Aug 21 2020 at 09:54

Reemplace este código a continuación en su controlador y limpie la caché:

        $product_ids = []; $onlydisproduct = $this->_productCollectionFactory->create() ->addAttributeToSelect('*') ->addAttributeToFilter('status', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED); foreach ($onlydisproduct as $key => $value) {
            $product_ids[] = $value->getId();
        }
        echo "<pre/>";
        print_r($product_ids);
        exit;
DhirenVasoya Aug 21 2020 at 10:05

Reemplace su código como este:

$onlydisproduct = $this->_productCollectionFactory->create();
$onlydisproduct->addAttributeToSelect('*'); $onlydisproduct->addAttributeToFilter('status', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED);