Показать все продукты в Magento 2

Я хочу показать весь продукт, если он включен или отключен, не имеет значения.

с этим

$collection = $this->_productCollectionFactory->create();
    $collection->addAttributeToSelect('*');
    return $collection;

Я получаю только включенный продукт, пожалуйста, помогите мне с этим, чтобы также получить отключенный продукт.


person Prits    schedule 09.07.2020    source источник


Ответы (1)


Нашел два решения по этому поводу, попробуйте первое, если оно у вас не работает, попробуйте второе.

Вы можете отключить проверку запасов в своей коллекции следующим образом:

$productCollection = $this->_productFactory->create()->getCollection();
$productCollection->setFlag('has_stock_status_filter', false);

Или еще вы можете использовать это:

$collection = $this->_productCollectionFactory->create()
                            ->addAttributeToSelect('*')
                            ->load();
            // Patch to alter load and get disabled products too
       $collection->clear();
            $where = $collection->getSelect()->getPart('where');
            foreach ($where as $key => $condition)
            {
                if(strpos($condition, 'stock_status_index.stock_status = 1') !== false){
                    $updatedWhere[] = 'AND (stock_status_index.stock_status IN (1,0))';
                } else {
                    $updatedWhere[] = $condition;
                }   
            }
            $collection->getSelect()->setPart('where', $updatedWhere);
            $collection->load();
person Shoaib Munir    schedule 09.07.2020
comment
На самом деле я использовал его в своем файле блока, затем вернул его и использовал в файле phtml, как это сделать! @Shoaib - person Prits; 09.07.2020
comment
вы пользовались этой моделью? \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory - person Shoaib Munir; 09.07.2020
comment
Я решил это с помощью предоставленного вами параметра $productCollection-›setFlag('has_stock_status_filter', false); Спасибо - person Prits; 09.07.2020
comment
Пожалуйста, изучите этот вопрос magento.stackexchange.com/questions/316851/ - person Prits; 09.07.2020
comment
Не подскажете, как получить только отключенный продукт @Shoaib? - person Prits; 13.07.2020
comment
Вместо AND (stock_status_index.stock_status IN (1,0)) можно использовать AND (stock_status_index.stock_status =0) - person Shoaib Munir; 13.07.2020