CakePHP中的高级排序

时间:2011-07-29 08:19:22

标签: cakephp sorting

我需要修改cakePHP中内置的系统,将字段上的排序顺序更改为同一字段上的字母顺序,但减去第一个字符(同时仍显示整个字段)。

所以基本上如果他们有.. a1, a3, b2, b4,排序顺序为a1, b2, a3, b4

目前根据find()排序的代码是否有一种方法可以强制进行此类排序,还是需要编写某种类型的自定义查询?

1 个答案:

答案 0 :(得分:2)

嗯..你有两个选择:

在查询后使用php对其进行排序。您可以使用usort。但是如果你想对结果进行分页

,这将不起作用

或者您可以将查询查询修改为以下内容:

$this->MyModel->find('all',array(... ,'order'=>'SUBSTRING(MyTable.sortfield,2) ASC'));

这个想法是生成一个类似的查询:

SELECT * FROM `MyTable` WHERE ... ORDER BY SUBSTRING(sortfield,2);

祝你好运