Dans Magento 2, pouvez-vous utiliser un référentiel de produits pour filtrer par attributs de produit?
Dans Magento 2, vous pouvez utiliser un objet de critères de recherche
\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria,
et un référentiel
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
Pour récupérer une liste d'objets
$searchCriteria->getPageSize(10);
$list = $productRepository->getList($searchCriteria);
Cependant, l'objet searchCriteria n'a pas (semble-t-il?) Des capacités de filtrage direct. La classe de critères de recherche n'ont des méthodes pour ajouter quelque chose appelé 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);
}
Mais on ne sait pas exactement ce qu'est un groupe de filtres grâce aux tableaux non typés de PHP.
Comment puis-je utiliser un référentiel Magento 2 pour faire des choses comme
- Montrez-moi tous les produits avec [cette référence spécifique]
- Montrez-moi tous les produits créés après [cette date]
- etc.
magento2
api
filter
repository
search-criteria
Alan Storm
la source
la source
Réponses:
Consultez l'exemple de classe suivant. Pour filtrer par SKU, essayez ceci:
Pour obtenir des produits créés après une date spécifique, ceci:
Exemple de classe:
la source
la source
\Magento\Framework\Api\Search\SearchCriteriaBuilder
est utilisé (spécifique à la recherche), tandis que j'ai utilisé\Magento\Framework\Api\SearchCriteriaBuilder
(générique pour tous les services), voir ma réponse. Il fournit également un moyen plus simple d'ajouter un filtre, lesaddFilter()
signatures sont différentes.