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?

Jawaban:


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

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';    
}

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);

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)

0

Saya pikir kamu bisa:

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

Tetapi ini bukan fungsi standar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.