代码之家  ›  专栏  ›  技术社区  ›  thesunneversets

CakePHP Find-Order By String To Int?

  •  4
  • thesunneversets  · 技术社区  · 14 年前

    我想使用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 回复  |  直到 14 年前
        1
  •  3
  •   thesunneversets    14 年前

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

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

    有什么意见吗?

        2
  •  0
  •   Nik Chankov    14 年前

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

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