小编Der*_*ald的帖子

CodeIgniter Datamapper ORM是否支持ORDER BY子句中的MySQL CASE语句?

使用Datamapper 1.8.1-dev for PHP的CodeIgniter,我正在尝试构建此查询以在列表顶部优先考虑一个国家/地区名称:

SELECT * FROM countries
ORDER BY CASE name WHEN 'Australia' THEN 1 ELSE 2 END, name
Run Code Online (Sandbox Code Playgroud)

我的国家模型上的PHP(扩展了Datamapper):

$countries = new Country();
$countries->order_by("CASE name WHEN 'Australia' THEN 1 ELSE 2 END, name");
$countries->get_iterated();
Run Code Online (Sandbox Code Playgroud)

而是将Datamapper解析为"CASE"作为表名,构建此语法错误查询:

SELECT * FROM (`countries`)
ORDER BY `CASE` name WHEN 'Australia' THEN 1 ELSE 2 END, `countries`.`name`
Run Code Online (Sandbox Code Playgroud)

我假设CASE案例没有被处理,因为这个流控制语句刚刚添加到MySQL 5中?我唯一的选择是order_bycountries表中添加列还是在数据库检索后使用PHP排序函数?

mysql codeigniter codeigniter-datamapper

0
推荐指数
1
解决办法
1615
查看次数