View Single Post
  #3  
Old 11-29-2017, 05:04 AM
  tony_sologubov's Avatar 
tony_sologubov tony_sologubov is offline
 

X-Cart team
  
Join Date: Jan 2009
Posts: 2,431
 

Default Re: Show random products from a category

@sabinudash,

I have found an example of pulling random entities from a repo here:
https://stackoverflow.com/a/39223980/1632233

I went ahead and tried to apply this to product repo and here is the implementation I came up with:

Code:
<?php // vim: set ts=4 sw=4 sts=4 et: namespace XLite\Module\XCExample\ModuleDemo\Model\Repo; /** * The "product" model repository */ abstract class Product extends \XLite\Model\Repo\Product implements \XLite\Base\IDecorator { public function getRandomProducts($amount = 7) { return $this->getRandomProductsNativeQuery($amount)->getResult(); } /** * @param int $amount * @return ORM\NativeQuery */ public function getRandomProductsNativeQuery($amount = 7) { # set entity name $table = $this->getClassMetadata() ->getTableName(); # create rsm object $rsm = new \Doctrine\ORM\Query\ResultSetMapping(); $rsm->addEntityResult($this->getEntityName(), 'p'); $rsm->addFieldResult('p', 'product_id', 'product_id'); # make query return $this->getEntityManager()->createNativeQuery(" SELECT p.product_id FROM {$table} p ORDER BY RAND() LIMIT 0, {$amount} ", $rsm); } }

Please, let me know if it works for you.

Tony
__________________
Found a bug in X-Cart? Post it to our bug tracker!
Know how to make X-Cart better? Suggest an idea!
Reply With Quote