Saya ingin menunjukkan semua produk jika diaktifkan atau dinonaktifkan tidak masalah.

Dengan ini

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

Saya hanya mendapatkan produk yang diaktifkan, tolong bantu saya dengan itu untuk mendapatkan produk yang dinonaktifkan juga.

1
Prits 9 Juli 2020, 11:04

1 menjawab

Jawaban Terbaik

Menemukan dua solusi untuk ini, silakan coba yang pertama, jika tidak berhasil untuk Anda, maka Anda dapat mencoba yang kedua.

Anda dapat menggunakan menonaktifkan pemeriksaan stok pada koleksi Anda dengan ini:

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

Atau Anda dapat menggunakan ini:

$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();
2
Shoaib Munir 9 Juli 2020, 08:49