我需要修改cakePHP中内置的系统,将字段上的排序顺序更改为同一字段上的字母顺序,但减去第一个字符(同时仍显示整个字段)。
所以基本上如果他们有.. a1, a3, b2, b4
,排序顺序为a1, b2, a3, b4
目前根据find()
排序的代码是否有一种方法可以强制进行此类排序,还是需要编写某种类型的自定义查询?
答案 0 :(得分:2)
嗯..你有两个选择:
在查询后使用php对其进行排序。您可以使用usort。但是如果你想对结果进行分页
,这将不起作用或者您可以将查询查询修改为以下内容:
$this->MyModel->find('all',array(... ,'order'=>'SUBSTRING(MyTable.sortfield,2) ASC'));
这个想法是生成一个类似的查询:
SELECT * FROM `MyTable` WHERE ... ORDER BY SUBSTRING(sortfield,2);
祝你好运