Saya menggunakan Magento 2.1.0 dan saat ini saya mengalami kesulitan dalam menyaring koleksi produk dengan beberapa kategori. Saya telah menggunakan lebih dari beberapa cara untuk membuatnya bekerja tetapi tidak.
Asumsi:
$catalog_ids = [618, 619, 620];
Mengembalikan NULL
$productCollection = $this->productCollectionFactory->create() ->addAttributeToSelect('*') ->addCategoriesFilter(array('in' => $catalog_ids));
Pengembalian pengecualian: Nama atribut tidak valid: category_id
$productCollection = $this->productCollectionFactory->create() ->addAttributeToSelect('*') ->addAttributeToFilter('category_id', array( 'finset' => $catalog_ids ));
Mengembalikan kesalahan Sintaks atau pelanggaran akses
$productCollection = $this->productCollectionFactory->create() ->addAttributeToSelect('*') ->addAttributeToFilter('category_ids', array( 'finset' => $catalog_ids ));
Adakah saran tentang bagaimana saya dapat memiliki pekerjaan ini atau memiliki sesuatu yang menghubungkan pekerjaan ini?
Jawaban:
Anda mungkin terbiasa dengan
$this
paradigma "setiap metode pengembalian " dari Magento 1. Ini bukan kasus lagi (setidaknya tidak selalu).Secara khusus,
addCategoriesFilter()
tidak mengembalikan apa pun dan itulah sebabnya Anda dapatkannull
.Ubah kode menjadi:
sumber
Percobaan pertama Anda jelas merupakan cara yang tepat untuk melakukannya:
Sekarang ada dua hal yang harus dipastikan:
$productCollection
harus menjadi contohMagento\Catalog\Model\ResourceModel\Product\Collection
agar ini berfungsi (atau dari kelas yang memperpanjangnya).Dan jelas Anda perlu memiliki produk dalam
catalog_category_product
tabel yang cocok dengan kondisi itu, mungkin itu tidak terjadi dan itu sebabnya Anda mendapatkan NULL.sumber