Überprüfen Sie, ob in Magento 2 ein Produkt mit SKU vorhanden ist


9

In Magento 1.x konnte ich tun

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

Wie kann ich dies in Magento 2 überprüfen?

Antworten:


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

Das funktioniert genau so, wie ich es wollte.
TS Guhan

10

Versuche dies:

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

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

ODER

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

und nach Prüfung

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

2
Ich dachte, Sie sollten den objectManager nicht direkt verwenden
bpoiss

aktualisiert und bitte jetzt prüfen
Abdul

2. Version ohne den Objektmanager ist besser :)
Anna Völkl

1

Siehe @ bpoiss Antwort, meine Antwort ist mehr darüber, wie man ein Produkt mit dem SKU bekommt.

Dazu können Sie die Magento\Catalog\Model\ProductRepositoryKlasse verwenden.

Injizieren Sie es zuerst in Ihren Konstruktor:

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 */
}

Dann können Sie in Ihrer Funktion Folgendes tun:

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

1
Dies hat bei mir nicht funktioniert, da ich, wenn die SKU vorhanden ist, eine Instanz von ProductInterface habe und ansonsten die Zeichenfolge 'Produkt existiert nicht', die als wahr ausgewertet wird. Ich müsste eine zusätzliche
Instanzprüfung durchführen

@bpoiss Ja, das stimmt. Bei meiner Antwort geht es mehr darum, wie man ein Produkt aus dem SKU holt. Ihre Antwort ist definitiv die richtige ein Formular auszufüllen;)
Raphael bei Digital Pianism

Vielen Dank für den Hinweis, aber in dem Moment, als ich die Frage schrieb, wusste ich die Antwort nicht ^^
bpoiss

@bpoiss haha ​​ok ^^ da deine Antwort schnell war, hast du es wohl gewusst. ;)
Raphael bei Digital Pianism

0

Ich habe gerade herausgefunden, dass die getIdBySkuMethode noch in existiert \Magento\Catalog\Model\Product. Injizieren Sie es mit

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

und dann können Sie mit überprüfen

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

0

Ich glaube du kannst:

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

Dies ist jedoch nicht die Standardfunktion.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.