Können Sie in Magento 2 ein Produkt-Repository verwenden, um nach Produktattributen zu filtern?
In Magento 2 können Sie ein Suchkriterienobjekt verwenden
\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria,
und ein Repository
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
Zum Abrufen einer Liste von Objekten
$searchCriteria->getPageSize(10);
$list = $productRepository->getList($searchCriteria);
Das searchCriteria-Objekt verfügt jedoch offenbar nicht über direkte Filterfunktionen. Die Suchkriterienklasse verfügt über Methoden zum Hinzufügen von so genannten Filtergruppen
#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);
}
Aber es ist nicht klar, was genau eine Filtergruppe ist, dank der untypisierten Arrays von PHP.
Wie kann ich ein Magento 2-Repository verwenden, um Dinge wie zu tun
- Zeige mir alle Produkte mit [dieser spezifischen SKU]
- Zeige mir alle Produkte, die nach [diesem Datum] erstellt wurden
- etc.
magento2
api
filter
repository
search-criteria
Alan Storm
quelle
quelle
Antworten:
Schauen Sie sich die folgende Beispielklasse an. Versuchen Sie Folgendes, um nach Artikelnummer zu filtern:
So erhalten Sie Produkte, die nach einem bestimmten Datum erstellt wurden:
Beispielklasse:
quelle
quelle
\Magento\Framework\Api\Search\SearchCriteriaBuilder
(suchspezifisch) verwendet, während ich\Magento\Framework\Api\SearchCriteriaBuilder
(generisch für alle Dienste) verwendet habe, siehe meine Antwort. Es bietet auch eine einfachere Möglichkeit zum Hinzufügen von Filtern, da sich dieaddFilter()
Signaturen unterscheiden.