Ответ 1
вы также можете использовать его следующим образом:
$data = array(1,3,4);
$select->where('status_id IN(?)', $data);
вам не нужно вставлять массив, и это безопаснее
Итак, я пытаюсь выполнить что-то вроде этого:
SELECT * FROM table WHERE status_id IN (1,3,4);
с помощью Zend_Db_Select... не могу найти, как это сделать:( Возможно ли это?
вы также можете использовать его следующим образом:
$data = array(1,3,4);
$select->where('status_id IN(?)', $data);
вам не нужно вставлять массив, и это безопаснее
По-видимому, это супер просто... глупо мне:
$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')
Я не мог найти это документально! Документация 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\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();