SKUを含む製品がMagento 2に存在するかどうかを確認する


9

Magento 1.xでできること

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

Magento 2でこれを確認するにはどうすればよいですか?

回答:


11
{を試す {
    $ product = $ productRepository-> get($ sku);= $ productRepository- > get $ sku );
}キャッチ(\ Magento \ Framework \ Exception \ NoSuchEntityException $ e){} キャッチ\ Magento \ Framework \ Exception \ NoSuchEntityException $ e ){  
    $ product = false;= 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を直接使用しないでください
bpoiss

今すぐans plsチェックを更新
Abdul

オブジェクトマネージャーなしの2番目のバージョンの方が優れています:)
AnnaVölkl2017年

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と評価される文字列「Product does not exist」を取得したため、これは私にとっては機能しませんでした。追加のインスタンスチェックを行う必要があります
bpoiss

@bpoissええそうです私の答えはSKUから製品を入手する方法についての詳細です、あなたの答えは間違いなく正しいものです;)ところで、新しい質問を作成するときは、「私の質問に答える」にチェックマークを付けることができるので、記入する1つのフォーム;)
デジタルピアニズムでのラファエル2016年

これを指摘してくれてありがとう、しかし私が質問を書いた瞬間私は答えを知りませんでした^^
bpoiss

@bpoiss haha​​ ok ^^あなたの答えは速かったので、あなたはそれを知っていたと思います。;)
デジタルピアニズムのラファエル2016年

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.