Czy w Magento 2 można użyć repozytorium produktów do filtrowania według atrybutów produktu?
W Magento 2 możesz użyć obiektu kryteriów wyszukiwania
\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria,
i repozytorium
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
Aby pobrać listę obiektów
$searchCriteria->getPageSize(10);
$list = $productRepository->getList($searchCriteria);
Jednak obiekt searchCriteria nie ma (wydaje się?) Możliwości bezpośredniego filtrowania. Klasa Kryteria wyszukiwania nie ma metody dodając coś o nazwie 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);
}
Ale nie jest jasne, czym dokładnie jest grupa filtrów dzięki nietypowym tablicom PHP.
Jak mogę używać repozytorium Magento 2 do robienia takich rzeczy
- Pokaż wszystkie produkty z [tym konkretnym SKU]
- Pokaż mi wszystkie produkty utworzone po [tej dacie]
- itp.
magento2
api
filter
repository
search-criteria
Alan Storm
źródło
źródło
Odpowiedzi:
Sprawdź następującą przykładową klasę. Aby filtrować według kodu SKU, spróbuj tego:
Aby uzyskać produkty utworzone po określonej dacie, należy:
Przykładowa klasa:
źródło
źródło
\Magento\Framework\Api\Search\SearchCriteriaBuilder
użyto (konkretnego wyszukiwania), podczas gdy ja użyłem\Magento\Framework\Api\SearchCriteriaBuilder
(ogólny dla wszystkich usług), zobacz moją odpowiedź. Zapewnia również prostszy sposób dodawania filtra,addFilter()
podpisy są różne.