Magento 2コントローラーで無効な製品のみを取得するにはどうすればよいですか?

Aug 21 2020

無効になっている製品のみを取得する方法コントローラーですべての製品を取得しています

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

製品のスクリーンショット

$ onlydisproduct-> setFlag( 'has_stock_status_filter'、false);を適用しています。しかし、それでもすべての製品を入手しています。

回答

RohanHapani Aug 21 2020 at 09:54

コントローラの以下のコードを置き換えて、キャッシュをクリーンアップします。

        $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

次のようにコードを置き換えます。

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