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.


_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');
$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!