Periksa apakah produk dengan sku ada di Magento 2

9

Di Magento 1.x saya bisa melakukannya

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

Bagaimana saya bisa memeriksanya di Magento 2?

Kapten
sumber

Jawaban:

11
coba { 
    $ product = $ productRepository -> get ( $ sku ); } catch ( \ Magento \ Framework \ Exception \ NoSuchEntityException $ e ) { 
    $ product = false ; } 
   
Amol Kumbhar
sumber
Ini bekerja persis seperti yang saya inginkan.
TS Guhan
10

Coba ini:

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

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

ATAU

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

dan setelah cek

if($this->_product->getIdBySku($sku)) {
    echo 'exit';    
}
Abdul
sumber
2
Saya pikir Anda tidak harus menggunakan objectManager secara langsung
bpoiss
diperbarui ans, mohon periksa sekarang
Abdul
Versi ke-2 tanpa manajer objek lebih baik :)
Anna Völkl
1

Lihat jawaban @bpoiss, jawaban saya lebih lanjut tentang cara mendapatkan produk menggunakan sku.

Untuk melakukannya, Anda dapat menggunakan Magento\Catalog\Model\ProductRepository kelas.

Suntikkan terlebih dahulu ke konstruktor Anda:

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

Maka dalam fungsi Anda yang dapat Anda lakukan:

$this->_productRepository->get($sku);
Raphael di Digital Pianism
sumber
1
Ini tidak berfungsi untuk saya karena jika sku ada saya mendapat contoh ProductInterface dan sebaliknya string 'Produk tidak ada' yang dievaluasi benar. Saya harus melakukan pemeriksaan contoh tambahan
bpoiss
@poiss ya itu benar jawaban saya adalah lebih lanjut tentang cara mendapatkan produk dari sku, jawaban Anda pasti yang benar;) Btw, Anda dapat mencentang 'jawab pertanyaan saya' ketika Anda membuat pertanyaan baru sehingga Anda hanya akan memiliki satu formulir untuk diisi;)
Raphael di Digital Pianism
terima kasih telah menunjukkan ini, tetapi pada saat saya menulis pertanyaan saya tidak tahu jawabannya ^^
bpoiss
@Bpoiss haha ​​ok ^^ karena jawaban Anda cepat, saya kira Anda sudah mengetahuinya. ;)
Raphael di Digital Pianism
0

Baru tahu bahwa getIdBySkumetode ini masih ada di \Magento\Catalog\Model\Product. Suntikkan dengan

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

dan daripada yang bisa Anda periksa

$this->productModel->getIdBySku($sku)
Kapten
sumber
0

Saya pikir kamu bisa:

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

Tetapi ini bukan fungsi standar.

pengguna3006940
sumber