No Magento 2, você pode usar um repositório de produtos para filtrar por atributos do produto?
No Magento 2, você pode usar um objeto de critério de pesquisa
\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria,
e um repositório
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
Para buscar uma lista de objetos
$searchCriteria->getPageSize(10);
$list = $productRepository->getList($searchCriteria);
No entanto, o objeto searchCriteria não (parece?) Possui recursos de filtragem direta. A classe critérios de pesquisa não têm métodos para adicionar algo chamado 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);
}
Mas não está claro o que exatamente um grupo de filtros é graças às matrizes não tipadas do PHP.
Como posso usar um repositório Magento 2 para fazer coisas como
- Mostre-me todos os produtos com [este SKU específico]
- Mostre-me todos os produtos criados após [esta data]
- etc.
magento2
api
filter
repository
search-criteria
Alan Storm
fonte
fonte
Respostas:
Confira a seguinte classe de amostra. Para filtrar por SKU, tente o seguinte:
Para criar produtos após uma data específica, faça o seguinte:
Classe de exemplo:
fonte
fonte
\Magento\Framework\Api\Search\SearchCriteriaBuilder
é usado (específico da pesquisa), enquanto eu usei\Magento\Framework\Api\SearchCriteriaBuilder
(genérico para todos os serviços), veja minha resposta. Além disso, fornece uma maneira mais simples de adicionar filtro, asaddFilter()
assinaturas são diferentes.