Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用zend框架编写mysql查询_Mysql_Zend Framework_Sql Order By - Fatal编程技术网

用zend框架编写mysql查询

用zend框架编写mysql查询,mysql,zend-framework,sql-order-by,Mysql,Zend Framework,Sql Order By,我有一个很好的查询 SELECT t.username FROM users t LEFT JOIN friends y ON t.id=y.user_id2 and y.user_id1=2 WHERE LOWER(t.username) LIKE 'ha%' ORDER BY CASE WHEN y.user_id2 IS NULL THEN 1 ELSE 0 END ,t.username; 我正试图用zend框架编写它,这就是我想到的

我有一个很好的查询

SELECT t.username
FROM users t LEFT JOIN friends y ON t.id=y.user_id2 and y.user_id1=2
WHERE LOWER(t.username) LIKE 'ha%'
ORDER BY 
    CASE WHEN y.user_id2 IS NULL THEN 1 
    ELSE 0 
    END     
    ,t.username;
我正试图用zend框架编写它,这就是我想到的

        $users = new Users;
        $select = $users->select();
        $select->setIntegrityCheck(false);
        $select->from(array('t1' => 'users'), array('username'));
        $select->joinLeft(array('t2' => 'friends'), 't1.id=t2.user_id2 and t2.user_id1 =2');
        $select->where("LOWER(t1.username) like '$input%'");
        $select->order("t1.username, CASE WHEN t2.user_id2 IS NULL THEN 1 ELSE 0 END ");
        $listofusernames = $users->fetchAll($select);
然而,它似乎不工作,我得到这个错误

Fatal error: Uncaught exception 'Zend_Db_Statement_Mysqli_Exception' with message 'Mysqli prepare error: Unknown column 't1.username, CASE WHEN t2.user_id2 IS NULL THEN 1 ELSE 0 END ' in 'order clause'' in /opt/lampp/htdocs/vote_old/library/Zend/Db/Statement/Mysqli.php:77 Stack trace: #0
显然,这与order by条款中嵌入的案例有关

你知道如何修复那个代码吗


谢谢

尝试将列放入数组


致命错误:未捕获异常“Zend_Db_Statement_Mysqli_exception”并显示消息“Mysqli prepare error:Unknown column”如果t2.user_id2为空,则在“order子句”中“您需要使用Zend_Db_Expr,就像我不确定这是什么意思一样。”。你能说得更具体些吗?
$select->order(array('t1.username',
              new Zend_Db_Expr ('CASE WHEN t2.user_id2 IS NULL THEN 1 ELSE 0 END')));