如何使用Magento集合中的表达式进行ORDER BY

Tha*_*anu 3 sql collections sql-order-by magento

我已经知道如何使用Magento系列进行简单的订购.但是这次我想做这样的事情,

SELECT * FROM table WHERE filed LIKE '%abc%' 
ORDER BY  SUBSTRING(field, 1, 2) DESC LIMIT 10
Run Code Online (Sandbox Code Playgroud)

那么如何在我的order by子句中添加SUBSTRING函数呢?有任何想法吗?

Jür*_*len 5

Magento模型有一个setOrder()简单的属性排序方法:

$oCollection = Mage::getModel('catalog/product')
    ->getCollection()
    ->setOrder('name_of_attribute_to_sort', 'ASC');
Run Code Online (Sandbox Code Playgroud)

它们没有像你这样的表达式进行排序的专用方法,但是Magento集合使用Varien_Db_Select扩展实例Zend_Db_Select,所以你可以使用它order()limit()方法:

$oCollection = Mage::getModel('catalog/product')->getCollection();
$oCollection
    ->getSelect()
    ->order(array('SUBSTRING(field, 1, 2) DESC'))
    ->limit(10);
Run Code Online (Sandbox Code Playgroud)