0

i want to get products rating using object manager i tried below mention code but its not working for me please guide me

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$reviewFactory = $objectManager->create('Magento\Review\Model\Review');

$storeId = $this->_storeManager->getStore()->getId();
$reviewFactory->getEntitySummary($product, $storeId);

$ratingSummary = $product->getRatingSummary()->getRatingSummary();
11
  • fatal error:uncaught Error:using $this when not in object context error Jul 9, 2019 at 9:17
  • Please check my updated answer. Jul 9, 2019 at 9:20
  • @RohanHapani i want to product rating without percentage simple key name rating encode=>4 etc Jul 9, 2019 at 9:20
  • warning:Division by zero out put @RohanHapani Jul 9, 2019 at 9:23
  • Check it now... Jul 9, 2019 at 9:29

1 Answer 1

0

Try to use this below code :

Method 1 :

$product_id = '1';
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$rating = $objectManager->create('\Magento\Review\Model\Rating');
$review = $objectManager->create('\Magento\Review\Model\Review');
$storeManager = $objectManager->create("\Magento\Store\Model\StoreManagerInterface");
$_ratingSummary = $rating->getEntitySummary($product_id);
$ratingCollection = $review->getResourceCollection()
                    ->addStoreFilter($storeManager->getStore()->getId())
                    ->addStatusFilter(\Magento\Review\Model\Review::STATUS_APPROVED)
                    ->addEntityFilter('product', $product_id);
$review_count = count($ratingCollection); // How many review in that specific product
$product_rating = '';
if ($_ratingSummary->getSum() > 0 && $_ratingSummary->getCount() > 0) {
     $product_rating = $_ratingSummary->getSum() / $_ratingSummary->getCount(); // Product rating in percentage
}    

Method 2 :

    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $rating = $objectManager->create('\Magento\Review\Model\Rating');
    $storeManager = $objectManager->create("\Magento\Store\Model\StoreManagerInterface");
    $ratingCollection = $rating->getResourceCollection()->addEntityFilter(
        'product',$product_id
    )->setPositionOrder()->setStoreFilter(
        $storeManager->getStore()->getId()
    )->addRatingPerStoreName(
        $storeManager->getStore()->getId()
    )->load();
    echo "<pre>";print_r($ratingCollection->getData());

Output Like :

Array
(
    [0] => Array
        (
            [rating_id] => 3
            [entity_id] => 1
            [rating_code] => Rating
            [position] => 0
            [is_active] => 1
            [entity_code] => product
        )

)

enter image description here

Note : Avoid to use Object Manager Method. Use Factory Method Structure.

Reference

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.