Magento2
How to get Product by ID and SKU in Magento 2

We will be using Magento 2’s Service Layer for this task. Use of Service Layer is highly encouraged by Magento 2.

Below is a block class of my custom module (Mtutorials_HelloWorld). I have injected object of \Magento\Catalog\Model\ProductRepository class in the constructor of my module’s block class.

app/code/Mtutorials/HelloWorld/Block/HelloWorld.php

_productRepository = $productRepository;
        parent::__construct($context, $data);
    }
    
    public function getProductById($id)
    {
        return $this->_productRepository->getById($id);
    }
    
    public function getProductBySku($sku)
    {
        return $this->_productRepository->get($sku);
    }
}
?>

Now, we load the product by id and sku in template file.

$id = 123; // YOUR PRODUCT ID
$sku = 'product-sku-123'; // YOUR PRODUCT SKU
$_product = $block->getProductById($id);
$_product = $block->getProductBySku($sku);
echo $_product->getEntityId();
echo '
'; echo $_product->getName();

Using Object Manager

$objectManager =  \Magento\Framework\App\ObjectManager::getInstance();        
 
$appState = $objectManager->get('\Magento\Framework\App\State');
$appState->setAreaCode('frontend');
 
$productRepository = $objectManager->get('\Magento\Catalog\Model\ProductRepository');
 
$id = 1; // YOUR PRODUCT ID;
$sku = 'product-sku-123'; // YOUR PRODUCT SKU
 
// get product by product id
$product = $productRepository->getById($id); 
 
// get product by product sku
$product = $productRepository->get($sku);

Hope this will helps you!

Leave a Reply

Your email address will not be published. Required fields are marked *