Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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
Php Zend框架按案例分组_Php_Mysql_Sql_Zend Framework - Fatal编程技术网

Php Zend框架按案例分组

Php Zend框架按案例分组,php,mysql,sql,zend-framework,Php,Mysql,Sql,Zend Framework,我在使用zend framework mysql groupby查询时遇到问题。我试图实现的是这个查询 SELECT * FROM `price_list` AS `pl` GROUP BY CASE WHEN `pl`.`sub_folder` IS NULL THEN `pl`.`id` ELSE `pl`.`sub_folder` END ORDER BY `pl`.`date_added` DESC 这是我用zend的方式尝试的 $sql = $this->sele

我在使用zend framework mysql groupby查询时遇到问题。我试图实现的是这个查询

SELECT * FROM `price_list` AS `pl` 
GROUP BY 
CASE WHEN `pl`.`sub_folder` IS NULL THEN 
`pl`.`id` 
ELSE 
`pl`.`sub_folder` 
END 
ORDER BY `pl`.`date_added` DESC
这是我用zend的方式尝试的

$sql = $this->select()->setIntegrityCheck(false);       
$sql->from(array('pl'=>$this->_name), array(''))
    ->columns($cols)
    ->group("case when pl.sub_folder is null then pl.id else pl.sub_folder end");
但在case条件下,输出的sql字符串带有错误的引号:

SELECT * FROM `price_list_pdf` AS `pl` 
GROUP BY `CASE WHEN pl`.`sub_folder is null then 
pl`.`id 
ELSE
pl`.`sub_folder 
end` 
ORDER BY `pl`.`date_added` DESC

如何清除字符串中的`呢?还是有更好的办法?请帮助..

对于未替换的查询,请使用
表达式

$sql = $this->select()->setIntegrityCheck(false);       
$sql->from(array('pl'=>$this->_name), array(''))
        ->columns($cols)
        ->group(new Zend_Db_Expr("case when pl.sub_folder is null then pl.id else pl.sub_folder end"));

您是否尝试从组语句中删除单引号?是的,实际上我是通过添加这些单引号来进行测试的。我认为您的SQL不正确。尝试删除单引号,除了aliases@Aditya是的,我试过不使用单引号,但是这个引号仍然在增加,非常有效!我用了“new Zend_Db_Expr”来代替。可能是“新表达式”适用于2.0版+哦,我的错,是的,我想你使用的是zf2(没有看到任何相关的zf1结构)…确定zf1就像你说的
Zend\u Db\u Expr
-基本过程是一样的