如何用Zend_Db_Select创buildWHERE IN子句

所以我正试图完成这样的事情:

SELECT * FROM table WHERE status_id IN (1,3,4); 

使用Zend_Db_Select …找不到如何做:(它是否可能?

你也可以像这样使用它:

 $data = array(1,3,4); $select->where('status_id IN(?)', $data); 

你不需要爆炸arrays,而且更安全

显然这是超级简单的…愚蠢的我:

 $select->where('status_id IN(1,3,4)'); 

🙁

第一个答案可能适用于ZF1,但在Zend Framework 2中不起作用:

 $data = array(1,3,4); $select->where('status_id IN(?)', $data); 

在Zend Framework2的情况下,我发现你必须使用:

 $data = array(1,3,4); $select->where(array('status_id' => $data)); 

结果:

 WHERE `status_id` IN ('1', '3', '4') 

我无法find任何地方logging! ZF文件通常是次优的。

 $completionNo = implode(",",$data); $db = Zend_Db_Table_Abstract::getDefaultAdapter(); $select = $db->select()->from(array("p"=>PREFIX . "property_master"),array('id','completion_no','total_carpet_area'))->where("p.completion_no IN (?)", $completionNo); 

我们可以在Zend\Db\Sql\Predicate\In使用Zend\Db\Sql\Predicate\In 哪里在模型查询where

 $this->status_ids = array(1,3,4); // select attributes from db by where in $result = $this->select(function (Select $select) { $predicate = new In(); $select->where( $predicate->setValueSet($this->status_ids) ->setIdentifier('status_id') ); })->toArray();