Unterstützt CodeIgniter Datamapper ORM eine MySQL CASE-Anweisung in ORDER BY-Klauseln?
Mit Datamapper 1.8.1-dev für PHPs CodeIgniter versuche ich, diese Abfrage zu erstellen, um einen Ländernamen ganz oben auf der Liste zu priorisieren:
SELECT * FROM countries
ORDER BY CASE name WHEN 'Australia' THEN 1 ELSE 2 END, name
PHP auf meinem Ländermodell (welches Datamapper erweitert):
$countries = new Country();
$countries->order_by("CASE name WHEN 'Australia' THEN 1 ELSE 2 END, name");
$countries->get_iterated();
Datamapper analysiert stattdessen "CASE" als Tabellennamen und erstellt dabei die folgende Syntaxfehlerabfrage:
SELECT * FROM (`countries`)
ORDER BY `CASE` name WHEN 'Australia' THEN 1 ELSE 2 END, `countries`.`name`
Ich gehe davon aus, dass der CASE-Fall nicht behandelt wird, da diese Flusssteuerungsanweisung gerade in MySQL 5 hinzugefügt wurde. Sind meine einzigen Alternativen, entweder eine hinzuzufügenorder_by
Spalte zumcountries
Tabelle oder eine PHP-Sortierfunktion nach dem Datenbankabruf verwenden?