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]を持つすべての製品を表示する
- [この日付]以降に作成されたすべての製品を表示する
- 等
2
上記のグループはMagento \ Framework \ Api \ Search \ FilterGroupの配列で、\ Magento \ Framework \ Api \ Filterフィルターがあり、フィルターは\ Magento \ Framework \ Api \ FilterBuilderで構築でき、condition_typeは「eq」、「neq」、「gt」などの形式。ただし、サポートされている条件タイプのリストが見つかりませんでした:\
—
Petar Dzhambazov
実際、リストのようなものは、Magento / Framework / Api / CriteriaInterface.php:79
—
Petar Dzhambazov