CakePHP Find - 按String-To-Int排序?

时间:2010-09-22 17:18:20

标签: mysql cakephp

我想使用CakePHP从数据库中提取照片数组,按照照片标题排序(0,1,2,3 ......)我的查询目前看起来像:

$ss_photos = $this->Asset->find('all',array(
  'conditions'=>array('kind'=>'photo'), 
  'order'=>'title'
));

不幸的是,标题似乎是字符串格式,导致不合需要的排序顺序(19.jpg之后的2.jpg等)。有没有一种快速的方法可以在这种类型的Cake查询中将'title'作为int进行排序?

2 个答案:

答案 0 :(得分:3)

不确定这是否是“推荐做法”,但在第一次通过时似乎有效:

$ss_photos = $this->Asset->find('all',array(
    'conditions'=>array('kind'=>'photo'), 
    'order'=>'Asset.title + 0'
));

有什么意见吗?

答案 1 :(得分:0)

解决方案是创建一个隐藏列,负责您的示例图像名称中的订单应该是:00002.jpg,00019.jpg - 这样订单才能正常工作。

如果结果不是太多,我认为用PHP对它们进行排序会更容易(如果你当然使用它:))看到这个natsort()你需要提取一个图像列表并对它们进行排序