Поддерживает ли CodeIgniter Datamapper ORM оператор MySQL CASE в предложениях ORDER BY?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Поддерживает ли CodeIgniter Datamapper ORM оператор MySQL CASE в предложениях ORDER BY?

Сообщение Anonymous »

Используя Datamapper 1.8.1-dev для PHP CodeIgniter, я пытаюсь построить этот запрос, чтобы установить приоритет одного названия страны вверху списка:

Код: Выделить всё

SELECT * FROM countries
ORDER BY CASE name WHEN 'Australia' THEN 1 ELSE 2 END, name
PHP в модели «Моя страна» (которая расширяет Datamapper):

Код: Выделить всё

$countries = new Country();
$countries->order_by("CASE name WHEN 'Australia' THEN 1 ELSE 2 END, name");
$countries->get_iterated();
Вместо этого Datamapper анализирует «CASE» как имя таблицы, создавая следующий запрос с синтаксической ошибкой:

Код: Выделить всё

SELECT * FROM (`countries`)
ORDER BY `CASE` name WHEN 'Australia' THEN 1 ELSE 2 END, `countries`.`name`
Я предполагаю, что случай CASE не обрабатывается, поскольку этот оператор управления потоком был только что добавлен в MySQL 5? Единственная ли у меня альтернатива: либо добавить столбец order_by в таблицу стран, либо использовать функцию сортировки PHP после получения базы данных?

Подробнее здесь: https://stackoverflow.com/questions/118 ... r-by-claus
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»