これはあなたのために働くはずです:
$collection = $this->collectionFactory->create();
$collection->addAttributeToFilter('status', ['in' => $this->productStatus->getVisibleStatusIds()]);
$collection->setVisibility($this->productVisibility->getVisibleInSiteIds());
使用されるクラスは次のとおりです。
/**
* @var \Magento\Catalog\Model\Resource\Product\CollectionFactory
*/
protected $collectionFactory;
/**
* @var \Magento\Catalog\Model\Product\Attribute\Source\Status
*/
protected $productStatus;
/**
* @var \Magento\Catalog\Model\Product\Visibility
*/
protected $productVisibility;
これらのクラスを確認して別のメソッドをチェックし、可能なステータスまたは可視性の値を取得してください。
ただし、Magento 2がコレクションを使用する代わりにリポジトリを使用して製品データにアクセスすることを推奨している限り、リポジトリの概念を確認してください。例えば:
$searchCriteria = $this->searchCriteriaBuilder->create();
$products = $this->productRepository->getList($searchCriteria)->getItems();