Di Magento 2, dapatkah Anda menggunakan repositori produk untuk memfilter menurut atribut produk?
Di Magento 2, Anda dapat menggunakan objek kriteria pencarian
\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria,
dan repositori
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
Untuk mengambil daftar objek
$searchCriteria->getPageSize(10);
$list = $productRepository->getList($searchCriteria);
Namun, objek searchCriteria tidak (tampaknya?) Memiliki kemampuan penyaringan langsung. Kelas kriteria pencarian memang memiliki metode untuk menambahkan sesuatu yang disebut filterGroups
#File: lib/internal/Magento/Framework/Api/SearchCriteria.php
public function getFilterGroups()
{
$filterGroups = $this->_get(self::FILTER_GROUPS);
return is_array($filterGroups) ? $filterGroups : [];
}
public function setFilterGroups(array $filterGroups = null)
{
return $this->setData(self::FILTER_GROUPS, $filterGroups);
}
Tapi tidak jelas apa, tepatnya, grup filter berkat array PHP yang tidak diketik.
Bagaimana saya bisa menggunakan repositori Magento 2 untuk melakukan hal-hal seperti
- Tunjukkan semua produk dengan [SKU spesifik ini]
- Tunjukkan semua produk yang dibuat setelah [tanggal ini]
- dll.
magento2
api
filter
repository
search-criteria
Alan Storm
sumber
sumber
Jawaban:
Lihat kelas sampel berikut. Untuk memfilter menurut SKU, coba ini:
Untuk mendapatkan produk yang dibuat setelah tanggal tertentu, ini:
Kelas sampel:
sumber
sumber
\Magento\Framework\Api\Search\SearchCriteriaBuilder
digunakan (khusus pencarian), sementara saya menggunakan\Magento\Framework\Api\SearchCriteriaBuilder
(generik untuk semua layanan), lihat jawaban saya. Juga menyediakan cara sederhana untuk menambahkan filter,addFilter()
tanda tangan berbeda.