Чи можете ви використовувати 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, щоб робити такі речі
- Покажіть мені всі товари з [цієї специфічної товарної позиції]
- Показати всі продукти, створені після [цієї дати]
- тощо.
2
Здається, що зазначені групи - це масив Magento \ Framework \ Api \ Search \ FilterGroup, який, у свою чергу, має \ Magento \ Framework \ Api \ Filter фільтри, фільтри можна будувати за допомогою \ Magento \ Framework \ Api \ FilterBuilder, форми 'eq', 'neq', 'gt' тощо. Але не вдалося знайти список підтримуваних типів умов: \
—
Петро Джамбазов
Насправді щось подібне до списку можна знайти на Magento / Framework / Api / CriteriaInterface.php: 79
—
Petar Dzhambazov