The question:
In Magento 2 how to get all the product reviews by product SKU.
Please find the screenshot below.
please provide/suggest me how to get.
I have written some test code:
<?php
use MagentoFrameworkAppBootstrap;
require __DIR__ . '/app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('MagentoFrameworkAppState');
$state->setAreaCode('frontend');
ini_set('display_errors', 1);
echo "All reviews of the product </br>";
$sku ='24-MB04';
$objectManager = MagentoFrameworkAppObjectManager::getInstance();
/** @var MagentoCatalogModelProduct $product */
$productObject = $objectManager->get('MagentoCatalogModelProduct');
$storeManager = $objectManager->get('MagentoStoreModelStoreManagerInterface');
$currentStoreId = $storeManager->getStore()->getId();
$product = $productObject->loadByAttribute('sku', $sku);
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
This is example to get product review by product SKU or Product ID
$sku = '24-MB02';
$objectManager = MagentoFrameworkAppObjectManager::getInstance();
$product = $objectManager->create("MagentoCatalogModelProduct")->loadByAttribute('sku', $sku); //use load($producID) if you have product id
$storeManager = $objectManager->get('MagentoStoreModelStoreManagerInterface');
$currentStoreId = $storeManager->getStore()->getId();
$rating = $objectManager->get("MagentoReviewModelResourceModelReviewCollectionFactory");
$collection = $rating->create()->addStoreFilter(
$currentStoreId
)->addStatusFilter(
MagentoReviewModelReview::STATUS_APPROVED
)->addEntityFilter(
'product',
$product->getId()
)->setDateOrder();
print_r($collection->getData()); //Get all review data of product
Method 2
Load RatingSummary by $product , Try below code :
$objectManager = MagentoFrameworkAppObjectManager::getInstance();
$reviewFactory = $objectManager->create('MagentoReviewModelReview');
$storeId = $this->_storeManager->getStore()->getId();
$reviewFactory->getEntitySummary($product, $storeId);
$ratingSummary = $product->getRatingSummary()->getRatingSummary();
Method 3
ini_set('display_errors', 1);
error_reporting(E_ALL);
ini_set('max_execution_time', 0);
ini_set('memory_limit', '-1');
set_time_limit(0);
use MagentoFrameworkAppBootstrap;
include("app/bootstrap.php");
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get('MagentoFrameworkAppState');
$state->setAreaCode('frontend');
$_categoryFactory = $objectManager->get('MagentoCatalogModelCategoryFactory');
$storeManager = $objectManager->get('MagentoStoreModelStoreManagerInterface');
$scopeConfig = $objectManager->get('MagentoFrameworkAppConfigScopeConfigInterface');
$sku = 'WT09'; // YOU PRODUCT SKU
$objectManager = MagentoFrameworkAppObjectManager::getInstance();
$product = $objectManager->create("MagentoCatalogModelProduct")->loadByAttribute('sku', $sku);
$rating = $objectManager->get("MagentoReviewModelResourceModelReviewCollectionFactory");
$collection = $rating->create()
->addStatusFilter(
MagentoReviewModelReview::STATUS_APPROVED
)->addEntityFilter(
'product',
$product->getId()
)->setDateOrder();
echo "<pre>";
print_r($collection->getData());
echo "<pre>";
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0