CakePHP Найти - Заказ по String-To-Int? - PullRequest
4 голосов
/ 22 сентября 2010

Я хочу использовать CakePHP, чтобы получить массив фотографий из базы данных, отсортированный по названию фотографии (0, 1, 2, 3 ...). Мой запрос в настоящее время выглядит примерно так:

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

К сожалению, заголовки выглядят в строковом формате, что приводит к нежелательному порядку сортировки (2.jpg после 19.jpg и т. Д.).Есть ли быстрый способ приведения 'title' в целое число для упорядочивания в запросе Cake этого типа?

Ответы [ 2 ]

3 голосов
/ 22 сентября 2010

Не уверен, что это «рекомендуемая практика», но на первом проходе это работает:

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

Есть мнения?

0 голосов
/ 22 сентября 2010

Решение состоит в том, чтобы создать скрытый столбец, который отвечает за заказы, в именах ваших примеров изображений: 00002.jpg, 00019.jpg - таким образом заказ будет работать правильно.

Если результатов не так уж много, я думаю, что их легче отсортировать в PHP (если вы используете его, конечно, :)) Посмотрите это natsort () вам просто нужно извлечь список изображений и отсортировать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...