cancel
Showing results for 
Search instead for 
Did you mean: 

Get product Image from Review Collection

SOLVED
   Did you know you can see the translated content as per your choice?

Translation is in progress. Please check again after few minutes.

Get product Image from Review Collection

I have a ReviewCollection, im trying to each "Review/Product" get a product image so i can pass on and display on template file:

 

public function getCollection()
    {
//\Magento\Review\Model\ResourceModel\Review\Product\CollectionFactory $_reviewsColFactory,
        $collection = $this->_reviewsColFactory->create()->addStoreFilter(
                $this->_storeManager->getStore()->getId()
            )->addStatusFilter(
                \Magento\Review\Model\Review::STATUS_APPROVED
            )->setDateOrder();

        $arr = array();
        foreach ($collection as $_review) {
            $days = $this->returnDays($_review);
            if ($days <= $this->_days) {
                if (!isset($arr[$_review->getSku()])) {
                    $arr[$_review->getSku()]['cont'] = 1;
                } else {
                    $arr[$_review->getSku()]['cont']++;
                }
                $arr[$_review->getSku()]['productUrl'] = $_review->getProductUrl();
                $arr[$_review->getSku()]['productName'] = $_review->getName();
                $arr[$_review->getSku()]['productImg'] = $_review->getImage(); //Empty
            }
        }
        // arsort($arr);
            
        return $collection;
    }

In that case is every $_review a Model/Product ? 

 

Thanks

1 ACCEPTED SOLUTION

Accepted Solutions

Re: Get product Image from Review Collection

Ty for the answer, i found out that from $reviewCollection->getId returns me the productId, loading ProductRepositoryInterface i got the imageUrl as follow: 

$imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\ListProduct');
$productImage = $imageBlock->getImage($product, 'category_page_grid');
$productImage->toHtml();

I uploaded the full code at my GitHub

View solution in original post

2 REPLIES 2

Re: Get product Image from Review Collection

You can get item image based on sku from review collection,

 

just add dependency on __construct() method,

 

 public function __construct(
     \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
 ) {
     $this->productRepository = $productRepository;       
 }                     
try {
     $itemSku = $_review->getSku();     
     $productData = $this->productRepository->get($itemSku);
     $itemImage = $productData->getData('image');
 } catch (\Exception $exception) {
     $productData = null;
     return "Invalid sku";
 };

Set $itemImage inside your function and you got image name.

 

If issue resolved, Click kudos/Accept as solutions.

If Issue Solved, Click Kudos/Accept As solutions. Get Magento insight from
Magento 2 Blogs/Tutorial

Re: Get product Image from Review Collection

Ty for the answer, i found out that from $reviewCollection->getId returns me the productId, loading ProductRepositoryInterface i got the imageUrl as follow: 

$imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\ListProduct');
$productImage = $imageBlock->getImage($product, 'category_page_grid');
$productImage->toHtml();

I uploaded the full code at my GitHub