Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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_Zend Framework2 - Fatal编程技术网

Php 如何在zend框架中嵌套动态查询?

Php 如何在zend框架中嵌套动态查询?,php,mysql,zend-framework2,Php,Mysql,Zend Framework2,我想为我的网站设计一个过滤系统。 我有以下详细信息的项目: id category price 1 2 11 2 1 10 3 1 23 4 3 27 5 3 36 6 2 42 我想使用zend类编写一个类似这样的查询 `SELECT * FROM item W

我想为我的网站设计一个过滤系统。 我有以下详细信息的项目:

 id     category     price
 1        2           11
 2        1           10
 3        1           23
 4        3           27
 5        3           36
 6        2           42
我想使用zend类编写一个类似这样的查询

`SELECT * FROM item WHERE category IN (1,2) AND (price BETWEEN 10 AND 20 OR price BETWEEN 41 AND 50)`
整个价格范围必须通过如下代码生成

`$select->from('item');
$where = new \Zend\Db\Sql\Where();
$where->in('category', array(1,2));
$where->and->nest;
foreach($input as $in) {
    $where->between('price', $min, $max)->or;
}
$where->unnest;
$select->where($where);`
现在,这段代码生成了以下错误的查询

`SELECT * FROM item WHERE category IN (1,2) AND () AND price BETWEEN IN 10 AND 20 OR price BETWEEN 41 AND 50`

现在,请帮助我使用zend framework类生成一个查询,作为前者。

嵌套函数返回一个将被嵌套的新谓词集。这就是为什么它对你不起作用,所以如果你把它改成这个。应该行得通

$select = $sql->select('item');
$where = new Where();
$where->in('category', array(1,2));
$nest = $where->and->nest();
foreach($input as $in) {
    $nest->between('price', $min, $max)->or;
}
$select->where($where);