запрос magento limit + заказ по rand () - PullRequest
4 голосов
/ 10 ноября 2010
function getIdModelsSliderJuwels(){
 $collection = Mage::getModel("catalog/product")->getCollection();
 $collection->addAttributeToFilter("attribute_set_id", 27); 
     $collection->addAttributeToSelect('modellijnen'); 
   //  $collection->setRandomOrder();
   //  $collection->getSelect()->limit( 5 ); 
 return $collection; 
}

Привет,

Я хотел бы знать, как установить ограничение для вашего запроса, выполняемого в Magento, потому что $collection->getSelect()->limit( 5 ); не работает.

Также, как выбрать случайным образом, $collection->setRandomOrder(); также не работает.

TXS.

Ответы [ 4 ]

8 голосов
/ 10 ноября 2010

setRandomOrder не работает для коллекций товаров, только для сопутствующих товаров. Вы должны будете добавить это самостоятельно с этим кодом:

$collection->getSelect()->order(new Zend_Db_Expr('RAND()'));

Ярлык для одновременной установки размера и номера страницы:

$collection->setPage($pageNum, $pageSize);
3 голосов
/ 16 ноября 2010

Как сказал Clockworkgeek, используйте метод $collection->getSelect()->order(...), чтобы рандомизировать порядок. Чтобы ограничить его количеством $n, вы также можете использовать

$collection->getSelect()->limit($n);
3 голосов
/ 10 ноября 2010

попробуйте использовать

$ галерею-> setPageSize (5) -> setCurPage (1);

0 голосов
/ 07 марта 2014

Использование ORDER BY RAND() для возврата списка элементов в случайном порядке потребует полного сканирования таблицы и сортировки.Это может отрицательно повлиять на производительность большого количества строк в таблице.

Существует несколько альтернативных решений, позволяющих оптимизировать этот запрос.Magento предоставляет собственное решение для этого.

Метод orderRand() для Varien_Db_Select и адаптер базы данных позволяют указать случайный ордер и индекс кредитного плеча для ORDER BY.Укажите имя некоторого целочисленного индексированного столбца, который будет использоваться в предложении ORDER BY, например:

$collection->getSelect()->orderRand('main_table.entity_id');

См. Varien_Db_Adapter_Pdo_Mysql::orderRand() для деталей реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...