Magento2 获取评论相关方法

Magento2 获取评论相关方法

使用对象管理器获取产品的评论

1. 获取全部产品的评论

 $objectManager = \Magento\Framework\App\ObjectManager::getInstance();

        //Get current store id
        $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
        $currentStoreId = $storeManager->getStore()->getId();

        $reviewCollectionFactory = $objectManager->create('Magento\Review\Model\ResourceModel\Review\CollectionFactory')->create();

        // Get reviews collection
        $reviewsCollection = $reviewCollectionFactory->addFieldToSelect('*')
            ->addStoreFilter($currentStoreId)
            ->addStatusFilter(\Magento\Review\Model\Review::STATUS_APPROVED)

            ->setDateOrder()
            ->addRateVotes();

2. 获取某个产品的全部评论

 $objectManager = \Magento\Framework\App\ObjectManager::getInstance();

        //Get current store id
        $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
        $currentStoreId = $storeManager->getStore()->getId();

        $reviewCollectionFactory = $objectManager->create('Magento\Review\Model\ResourceModel\Review\CollectionFactory')->create();

        // Get reviews collection
        $reviewsCollection = $reviewCollectionFactory->addFieldToSelect('*')
            ->addStoreFilter($currentStoreId)
            ->addStatusFilter(\Magento\Review\Model\Review::STATUS_APPROVED)
//            ->addEntityFilter('product', $_product->getId())
            ->addEntityFilter('product', '563')
            ->setDateOrder()
            ->addRateVotes();

        echo "<pre>";
        print_r($reviewsCollection->getData());
        echo "</pre>";
        die();

输出结果:

3. 获取平均评分

private function getRatingSummary($_product)
    {
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        //Get current store id
        $storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
        $currentStoreId = $storeManager->getStore()->getId();
        $this->_reviewFactory->create()->getEntitySummary($_product,$currentStoreId);
        $ratingSummary = $_product->getRatingSummary()->getRatingSummary();
        $avg = $ratingSummary / 20 ;
        return $avg;
    }