洋红色从类别获取产品,按兰特()排序

2022-08-30 21:45:28

我有以下几点:

$products = Mage::getModel('catalog/product')
    ->getCollection()
    ->addAttributeToSort('id', 'RAND()')
    ->addAttributeToSelect('small_image')
    ->addCategoryFilter(Mage::getModel('catalog/category')->load($catId));

但是我需要按id订购,我该怎么做?(代码显示了我如何尝试而没有运气)RAND()


答案 1

Magento 集合不接受所选属性之一以外的参数。在这种情况下,您应该获取对象并向其添加订单指令。Zend_Db_Select

$products = Mage::getModel('catalog/product')
    ->getCollection()
    ->addAttributeToSort()
    ->addAttributeToSelect('small_image')
    ->addCategoryFilter(Mage::getModel('catalog/category')->load());
$products->getSelect()->order(new Zend_Db_Expr('RAND()'));

要查看将执行的查询,您可以使用此配置

$products->load(true, true); // first parameter show sql query in output, second show sql query in var/log/syslog

答案 2

参考这个问题:查询magento limit + order by rand() 和 clockworkgeek 的答案:

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

推荐