查询:
select * from table_name ORDER BY name like 'C%' DESC;
这个查询在MySql中运行良好,但我无法使用Zend DB构建查询。我在执行时出错。
PHP数据库代码:
$result = $this->getDefaultAdapter()
->select()
->from($this->_name,array('*'))
->order("name like 'C%' DESC")
->query()
->fetchAll();
错误:
找不到列:1054"order clause"中类似"C%"的未知列"名称">
提前感谢
Zend_Db_Select试图将字符串分隔为列名,但如果您传递类型为Zend_Db_Expr的对象而不是字符串,则会跳过此操作:
->order(new Zend_Db_Expr("name like 'C%' DESC"))->
还有一个未记录的快捷方式:列分隔函数假设任何包含括号的字符串都很可能是表达式,而不仅仅是列名。因此,以下方法也适用:
->order( "(name like 'C%' DESC)" )->
我不熟悉zend,但试着像这个一样在zend中重写您的sql查询
select *, (`name` like 'C%') as theFiled from table_name by theFiled desc;
虽然我不太确定,但我想Zend代码一定是这样的,
$result = $this->getDefaultAdapter() ->select()
->from($this->_name,array('*', "theFiled" => "name like 'C%'") ->order("theFiled DESC")
->query() ->fetchAll();