0

How to get only disabled product In Controller I have getting all the products

<?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();
}
}

Product Screenshot

enter image description here I am applying $onlydisproduct->setFlag('has_stock_status_filter', false); but still getting all products.

6
  • what's your magento version? Aug 21 '20 at 9:46
  • do you want disable product or out of stock product? Aug 21 '20 at 9:47
  • If you need disabled you bneed that : ->addAttributeToFilter('status', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED)
    – Claims
    Aug 21 '20 at 9:53
  • My magento version Magento ver. 2.3.5-p1 @RohanHapani
    – Prits
    Aug 21 '20 at 9:54
  • I want Disabled Product @DhirenVasoya
    – Prits
    Aug 21 '20 at 9:54
0

Replace this below code in your controller and cache clean :

        $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;
7
  • It gives me an empty array @Rohan
    – Prits
    Aug 21 '20 at 10:05
  • Did you get product collection? or have you disabled products in your product list? Aug 21 '20 at 10:17
  • How do i check for product collection on var_dump it gives me Allowed memory size of 792723456 bytes exhausted @Rohan
    – Prits
    Aug 21 '20 at 10:39
  • print_r($onlydisproduct->getData()); just do it. Aug 21 '20 at 10:41
  • Did you get collection? @Prits Aug 21 '20 at 10:49
0

Replace your code like this one :

$onlydisproduct = $this->_productCollectionFactory->create();
$onlydisproduct->addAttributeToSelect('*');
$onlydisproduct->addAttributeToFilter('status', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED);
9
  • It gives me an empty array @Dhiren
    – Prits
    Aug 21 '20 at 10:08
  • Kindly check that you have some disable product into system. Aug 21 '20 at 10:14
  • Yes i have disabled product in my system @Dhiren
    – Prits
    Aug 21 '20 at 10:33
  • Then above code must work, have you check by caching and indexing commands. Aug 21 '20 at 10:38
  • Flushed all cached and indexer done but still no success@Dhiren
    – Prits
    Aug 21 '20 at 10:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.