回答:
インスタンス化されているが読み込まれていないコレクション $collection
と製品IDの配列を指定$productIds
するaddIdFilter()
と、Magento 1と同じように使用できます。
$collection->addIdFilter($productIds);
コレクションをインスタンス化するには、を注入し\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
てから使用できます
$collection = $this->collectionFactory->create();
しかし、これはもう推奨されない練習です!
Magento 2では、コアモジュールを使用するときに、コレクションについてあまり考えないでください。これらは単なる実装の詳細です。代わりにサービスコントラクトを使用します。
Magento\Catalog\Api\ProductRepositoryInterface
して\Magento\Framework\Api\SearchCriteriaBuilder
use Magento\Framework\Api\Filter;
検索条件を作成し、それをに渡します$productRepository->getList()
。
$searchCriteria = $this->searchCriteriaBuilder->addFilter(new Filter([
Filter::KEY_FIELD => 'entity_id',
Filter::KEY_CONDITION_TYPE => 'in',
Filter::KEY_VALUE => $productIds
]))->create();
$products = $this->productRepository->getList($searchCriteria)->getItems();
$products
次に、製品の配列です。
SearchCriteriaとProduct Repositoriesを使用します。
$productIds = [.....];
$searchCriteria = $this->searchCriteriaBuilder
->addFilter('entity_id', $productIds, 'in')
->create();
$products = $this->productRepositoryInterface->getList($searchCriteria)->getItems();
検索条件ビルダーと製品リポジトリオブジェクトを取得するには、以下が必要です。
$porductIds=array(2,6,7);
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection');
$collectionByIds = $productCollection->addAttributeToSelect('*');
$collectionByIds->addFieldToFilter('entity_id', array('in' => $data));
$collectionByIds->load();
foreach ($collectionByIds as $collection) :
echo "<pre>";
print_r($collection->getName());
endforeach;