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。
答案 0 :(得分:8)
setRandomOrder
不适用于产品系列,仅适用于相关产品。您必须使用以下代码自行添加:
$collection->getSelect()->order(new Zend_Db_Expr('RAND()'));
同时设置页面大小和数字的快捷方式是:
$collection->setPage($pageNum, $pageSize);
答案 1 :(得分:3)
尝试使用
$收藏 - > setPageSize(5) - > setCurPage(1);
答案 2 :(得分:3)
正如clockworkgeek所说,使用$collection->getSelect()->order(...)
方法随机化订单。要将其限制为$n
个项目,您也可以使用
$collection->getSelect()->limit($n);
答案 3 :(得分:0)
使用ORDER BY RAND()
以随机顺序返回项目列表需要进行全表扫描和排序。它会对表中大量行的性能产生负面影响。
如何优化此查询有几种替代解决方案。 Magento为此提供了原生解决方案。
orderRand()
的{{1}}方法和数据库适配器允许为Varien_Db_Select
指定随机顺序和杠杆索引。指定要在ORDER BY
子句中使用的某个整数索引列的名称,例如:
ORDER BY
有关实施细节,请参阅$collection->getSelect()->orderRand('main_table.entity_id');
。