В Magento 2, вы можете использовать репозиторий продуктов для фильтрации по атрибутам продукта?
В Magento 2 вы можете использовать объект критериев поиска
\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria,
и хранилище
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
Чтобы получить список объектов
$searchCriteria->getPageSize(10);
$list = $productRepository->getList($searchCriteria);
Однако объект searchCriteria не имеет (кажется?) Возможности прямой фильтрации. Класс критерии поиска действительно есть методы для добавления что - то называют 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);
}
Но не ясно, что именно представляет собой группа фильтров благодаря нетипизированным массивам PHP.
Как я могу использовать хранилище Magento 2 для таких вещей, как
- Покажите мне все продукты с [этим конкретным SKU]
- Покажите мне все продукты, созданные после [этой даты]
- и т.п.
magento2
api
filter
repository
search-criteria
Алан Сторм
источник
источник
Ответы:
Проверьте следующий пример класса. Чтобы отфильтровать по SKU, попробуйте это:
Чтобы получить продукты, созданные после определенной даты, это:
Образец класса:
источник
источник
\Magento\Framework\Api\Search\SearchCriteriaBuilder
используется (специфичный для поиска), а я использовал\Magento\Framework\Api\SearchCriteriaBuilder
(универсальный для всех сервисов), смотрите мой ответ. Также это обеспечивает более простой способ добавления фильтра,addFilter()
подписи разные.