Zend DB fetchAll (): массив предложений where с оператором IN - PullRequest
14 голосов
/ 17 февраля 2010

Я выбираю записи из базы данных, используя эквивалент этого запроса:

SELECT * FROM reports WHERE user_id IN (3, 6, 22);

Функция, вызывающая fetchAll (), имеет аргумент, представляющий собой массив идентификаторов пользователей, и этот вызов работает просто отлично:

$resultSet = $this->getDbTable()->fetchAll('user_id IN (' . implode(', ', $userIds) . ')');

Тем не менее, я хотел бы использовать массив для предложения where, потому что, вероятно, позже будут другие ограничения для запроса ... и я не могу понять это на всю жизнь. Я подумала, что это будет не так:

$resultSet = $this->getDbTable()->fetchAll(array('user_id IN ?' => '(' . implode(', ', $userIds) . ')'));

Но пока нет игральных костей. Может ли кто-нибудь предоставить правильный синтаксис здесь?

Ответы [ 3 ]

21 голосов
/ 18 февраля 2010
$data = array(1, 2, 3);
$select->where('user_id IN (?)', $data);
2 голосов
/ 23 января 2014

В Zend 2

$data = array(1, 2, 3);
$select->where('user_id', $data);
0 голосов
/ 08 августа 2016
$select = $this->getSql()->select();
$select->where("reports.user_id in ('3','6','22')"); 
$resultSet = $this->selectWith($select);             
//echo $select->getSqlString();die;
return $resultSet;
...