所以我试图完成这样的事情:
SELECT * FROM table WHERE status_id IN (1,3,4);
使用 Zend_Db_Select... 找不到怎么做 :( 有可能吗?
所以我试图完成这样的事情:
SELECT * FROM table WHERE status_id IN (1,3,4);
使用 Zend_Db_Select... 找不到怎么做 :( 有可能吗?
你也可以像这样使用它:
$data = array(1,3,4);
$select->where('status_id IN(?)', $data);
你不需要内爆数组,而且更安全
第一个答案可能适用于 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')
我在任何地方都找不到这个记录!ZF 文档通常不是最佳的。
显然它非常简单......愚蠢的我:
$select->where('status_id IN(1,3,4)');
:(
我们可以使用Zend\Db\Sql\Predicate\In
with在模型内部进行Zend\Db\Sql\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();
This solution works well with zf2
$ids = array('1', '2', '3', '4', '5', '6', '7', '8');
$select->where(array("app_post_id"=> $ids));
或者
$ids = array('1', '2', '3', '4', '5', '6', '7', '8');
$sql = new Sql($this->adapter);
$select = $sql->select();
$select->from('app_post_comments');
$select->where(array("app_post_id"=> $ids));
// echo $select->getSqlString($this->adapter->getPlatform());
// exit;
$statement = $sql->prepareStatementForSqlObject($select);
$result = $statement->execute();
$resultSet = new ResultSet();
$resultSet->initialize($result);
$resultSet->buffer()->toArray();
echo '<pre>';
print_r($resultSet);
exit;
return $resultSet;
$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);