Magento 2 – How to Get Entity ID by SKU and Attribute ID

magento2product-attribute

I have created an extension that creates product attribute "Is Old" after installing extension. Attribute is in drop down form with Yes and No.

Attribute value is saving in "catalog_product_entity_int" table.

The main purpose of creating this attribute is that admin can decide if current product is old or not.

Now I want to fetch all those product's entity id that is set to "YES" in "Is Old" drop down value and by specific SKU.

I have fetched product's entity id by SKU but now I want to fetch entity id by sku and is_old value "Yes" as well.

Here is my code to fetch product entity id by SKU only.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
$connection = $resource->getConnection();

$select = "Select * FROM catalog_product_entity WHERE sku='123'";
$rowArray = $connection->fetchRow($select);
$enitity_id = $rowArray['entity_id'];

enter image description here

Best Answer

I don't understand why are you fetching a product id by filtering with SKU and is_old attribute. Because SKU is already an unique value.

I am posting my answer here with two different cases.

Case 1: Get product Id using sku.

<?php 

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

?>

Case 2: Get old products using sku.

<?php 

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$products = $objectManager->get('Magento\Catalog\Model\Product')
            ->getCollection()
            ->addAttributeToFilter('is_old',1)
            ->addAttributeToFilter('sku',array('sku1','sku2',.....));

echo "<pre>";
print_r($products->getData());

?>