이것은 당신을 위해 작동합니다 :
$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();