En Magento 2, ¿puede usar un repositorio de productos para filtrar por atributos del producto?
En Magento 2, puede usar un objeto de criterio de búsqueda
\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria,
y un repositorio
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
Para buscar una lista de objetos
$searchCriteria->getPageSize(10);
$list = $productRepository->getList($searchCriteria);
Sin embargo, el objeto searchCriteria no tiene (¿parece?) Capacidades de filtrado directo. La clase criterios de búsqueda no tiene métodos para agregar algo llamado 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);
}
Pero no está claro qué es exactamente un grupo de filtros gracias a las matrices sin tipo de PHP.
¿Cómo puedo usar un repositorio de Magento 2 para hacer cosas como
- Muéstrame todos los productos con [este SKU específico]
- Muéstrame todos los productos creados después de [esta fecha]
- etc.
2
Parece que dichos grupos son una matriz de Magento \ Framework \ Api \ Search \ FilterGroup, que a su vez tiene filtros \ Magento \ Framework \ Api \ Filter, los filtros se pueden construir con \ Magento \ Framework \ Api \ FilterBuilder y condition_type está en la forma de 'eq', 'neq', 'gt', etc. Pero no se pudo encontrar la lista de tipos de condición admitidos: \
—
Petar Dzhambazov
En realidad, se puede encontrar algo así como una lista en Magento / Framework / Api / CriteriaInterface.php: 79
—
Petar Dzhambazov