Zend DB中带有'like'子句的Order子句

Shi*_*r P 2 php zend-framework mysql-error-1054

查询:

select * from table_name ORDER BY name like 'C%' DESC;

此查询在MySql中正常工作,但我无法使用Zend DB构建查询.我在执行时遇到错误.

PHP DB代码:

$result = $this->getDefaultAdapter() ->select() ->from($this->_name,array('*')) ->order("name like 'C%' DESC") ->query() ->fetchAll();

错误:

Column not found: 1054 Unknown column 'name like 'C%'' in 'order clause' 

提前致谢

Bil*_*win 6

Zend_Db_Select尝试将字符串分隔为列名,但如果传递Zend_Db_Expr类型的对象而不是字符串,它会跳过这样做:

->order(new Zend_Db_Expr("name like 'C%' DESC"))->
Run Code Online (Sandbox Code Playgroud)

还有一个未记录的快捷方式:列分隔函数假定包含括号的任何字符串很可能是表达式而不仅仅是列名.所以以下内容也适用:

->order( "(name like 'C%' DESC)" )->
Run Code Online (Sandbox Code Playgroud)