用于对magento集合进行排序的多个字段

时间:2015-07-13 04:13:29

标签: php magento magento-1.8 magento-1.9

这是目标sql查询:     ......按field1 asc,price_index.min_price desc

排序

这是我的代码

$productCollection->getCollection()
         ->setOrder('field1', 'asc')
         ->setOrder('price', 'desc')

然而,在我的结果中,价格始终是第一个订购字段。有人可以帮我吗,拜托?非常感谢你

5 个答案:

答案 0 :(得分:4)

$collection->getSelect()
    ->order('field1 asc');

或按多个排序:

 $collection->getSelect()
    ->order(array('field1 asc', 'price desc'));

答案 1 :(得分:3)

要使用多个字段进行排序,您可以将调用链接到Collection的方法addAttributeToSort()

$productCollection->getCollection()
         ->addAttributeToSort('field1', 'asc')
         ->addAttributeToSort('price', 'desc');

答案 2 :(得分:2)

关于自定义资源集合,请使用addOrder

Mage::getModel('module/model')->getCollection()
    ->addOrder('first', 'ASC')
    ->addOrder('second', 'DESC')
    ->addOrder('other', 'DESC');

答案 3 :(得分:0)

使用:

productCollection->getSelect()->reset(Zend_Db_Select::ORDER); 

然后:

productCollection->getSelect()
            ->order(.......) 

该代码将解决此问题^ ^

答案 4 :(得分:0)

要对多个字段进行排序,您可以使用

$collection = Mage::getModel(‘module/model_name’)->getCollection()
->addAttributeToSort(‘order’, ‘ASC’)
->addAttributeToSort(‘last_name’, ‘ASC’)
->addAttributeToSort(‘first_name’, ‘ASC’);