ตรวจสอบว่ามี sku อยู่ใน Magento 2 หรือไม่


9

ใน Magento 1.x ฉันทำได้

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

ฉันจะตรวจสอบเรื่องนี้ใน Magento 2 ได้อย่างไร

คำตอบ:


11
ลอง { {
    $ product = $ productRepository-> get ($ sku);= $ productRepository -> get ( $ sku );
} catch (\ Magento \ Framework \ Exception \ NoSuchEntityException $ e) {} catch ( \ 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 กรุณาตรวจสอบตอนนี้
Abdul

รุ่นที่ 2 โดยไม่ต้องผู้จัดการวัตถุจะดีกว่า :)
แอนนาVölkl

1

ดู @bpoiss คำตอบคำตอบของฉันคือเพิ่มเติมเกี่ยวกับวิธีรับผลิตภัณฑ์โดยใช้ sku

คุณสามารถใช้Magento\Catalog\Model\ProductRepositoryคลาสได้

ก่อนอื่นให้ฉีดเข้าไปใน Constructor ของคุณ:

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 และสตริง 'ผลิตภัณฑ์ไม่มีอยู่' ซึ่งจะกลายเป็นจริง ฉันจะต้องทำการตรวจสอบอินสแตนซ์เพิ่มเติม
bpoiss

@bpoiss ใช่แล้วคำตอบของฉันถูกกว่าเกี่ยวกับวิธีการรับผลิตภัณฑ์จาก sku คำตอบของคุณคือหนึ่งที่เหมาะสมแน่นอน) Btw คุณสามารถติ๊กที่ 'ตอบคำถามของฉัน' เมื่อคุณสร้างคำถามใหม่ดังนั้นคุณจะมีเพียง กรอกแบบฟอร์มเดียว;)
Raphael ที่ Digital Pianism

ขอบคุณสำหรับการชี้ให้เห็น แต่ในขณะนี้ฉันเขียนคำถามฉันไม่ทราบคำตอบ ^^
bpoiss

@bpoiss ฮ่าฮ่า ok ^^ เพราะคำตอบของคุณรวดเร็วฉันเดาว่าคุณรู้ ;)
Raphael ที่ Digital Pianism

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.