Ü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?

bpoiss
quelle

Antworten:

11
try { 
    $ product = $ productRepository -> get ( $ sku ); } catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { 
    $ product = false ; }} 
   
Amol Kumbhar
quelle
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';    
}
Abdul
quelle
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);
Raphael beim digitalen Pianismus
quelle
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)
bpoiss
quelle
0

Ich glaube du kannst:

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

Dies ist jedoch nicht die Standardfunktion.

user3006940
quelle