Zend framework2 我可以将字符串传递给Zend sql';s阶函数?

Zend framework2 我可以将字符串传递给Zend sql';s阶函数?,zend-framework2,zend-db-select,Zend Framework2,Zend Db Select,我正在编写一个复杂的搜索算法,可以分层搜索。对于其中两层,我需要非常奇怪的order子句,Zend的sql builder根本无法处理这些子句。有没有一种方法可以告诉Zend只向ORDERBY子句添加一个字符串,而不尝试解释和破坏它 对于那些想知道的人,我的订单的一个例子是 IF(名称像“1234%”或名称像“%1234%”或名称像“%1234%”或代码像“1234%”或代码像“%1234%”或代码像“%1234”、1、0)+IF(名称像“ASF%”或名称像“%ASF%”或名称像“%ASF%”或

我正在编写一个复杂的搜索算法,可以分层搜索。对于其中两层,我需要非常奇怪的order子句,Zend的sql builder根本无法处理这些子句。有没有一种方法可以告诉Zend只向ORDERBY子句添加一个字符串,而不尝试解释和破坏它

对于那些想知道的人,我的订单的一个例子是

IF(名称像“1234%”或名称像“%1234%”或名称像“%1234%”或代码像“1234%”或代码像“%1234%”或代码像“%1234”、1、0)+IF(名称像“ASF%”或名称像“%ASF%”或名称像“%ASF%”或代码像“ASF%”或代码像“%ASF%”,1、0)

它基本上统计当前记录包含的搜索字符串中的字数,并以此排序

我想做这样的事情

$sql = new Sql($this->adapter);
$select = $sql->select();
$select->from('Table');
$select->where($where);
$select->order($orderString);

如果
order by
子句的参数是纯字符串,则将考虑它 仅作为列名(后跟或不后跟“ASC”或“DESC”)

一种可能的解决方案是使用
表达式
类。大概是这样的:

 $select->order(array(new \Zend\Db\Sql\Expression($orderString)));
希望这有帮助