sku가있는 제품이 Magento 2에 존재하는지 확인


9

Magento 1.x에서는 할 수 있습니다

if(Mage::getModel('catalog/product')->getIdBySku($sku))

Magento 2에서 이것을 어떻게 확인할 수 있습니까?

답변:


11
try { 
    $ product = $ productRepository- > get ( $ sku ); } catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { 
    $ product = false ; } 
   

이것은 내가 원하는대로 정확하게 작동합니다.
TS Guhan

10

이 시도:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Catalog\Model\Product');

if($product->getIdBySku($sku)) {
    echo 'exit';    
}

또는

protected $product;
    public function __construct(
            \Magento\Catalog\Model\Product $product
    ) {
        $this->_product = $product;
    }

그리고 확인 후

if($this->_product->getIdBySku($sku)) {
    echo 'exit';    
}

2
나는 당신이
objectManager를

ans pls 점검 지금 업데이트
Abdul

개체 관리자가없는 두 번째 버전이 더 좋습니다 :)
Anna Völkl

1

@ bpoiss 답변을 참조하십시오. 제 답변은 sku를 사용하여 제품을 얻는 방법에 대한 것입니다.

그렇게하려면 Magento\Catalog\Model\ProductRepository수업을 사용할 수 있습니다 .

먼저 생성자에 주입하십시오.

protected $_productRepository;

public function __construct(/* your original parameters here */, \Magento\Catalog\Model\ProductRepository $productRepository)
{
    /* your original code here */
    $this->_productRepository = $productRepository;
    /* end of your original code */
}

그런 다음 기능에서 다음을 수행 할 수 있습니다.

$this->_productRepository->get($sku);

1
Sku가 존재하면 ProductInterface의 인스턴스가 있고 그렇지 않으면 '제품이 존재하지 않습니다'라는 문자열이 true이기 때문에 이것은 나를 위해 작동하지 않았습니다. 추가 인스턴스 확인을 수행해야합니다
bpoiss

@ bpoiss 그래 맞아 내 대답은 sku에서 제품을 얻는 방법에 대한 것입니다. 답은 분명히 옳습니다.) Btw, 새 질문을 만들 때 '내 질문에 대답하십시오'를 선택하면 하나의 양식;)
디지털 피아니즘의 Raphael

이것을 지적 해 주셔서 감사하지만, 나는 질문을 쓴 순간 대답을 몰랐습니다 ^^
bpoiss

@bpoiss haha ​​ok ^^ 당신의 대답이 빠르면 나는 당신이 그것을 알고 있다고 생각합니다. ;)
디지털 피아니즘의 Raphael

0

getIdBySku방법이 여전히에 있음을 알았습니다 \Magento\Catalog\Model\Product. 그것을 주입

public function __construct(
    \Magento\Catalog\Model\Product $productModel
) {
    $this->productModel = $productModel;
}

당신이 확인할 수있는 것보다

$this->productModel->getIdBySku($sku)

0

나는 당신이 할 수 있다고 생각합니다 :

$checkProduct = $this->objectManager->create(
                'Magento\Catalog\Model\Product'
            );
    if($checkProduct->getIdBySku()){
    echo 'exist';
    }

그러나 이것은 표준 기능이 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.