Ответ 1
$data = array(1, 2, 3);
$select->where('user_id IN (?)', $data);
Я выбираю записи из базы данных, используя эквивалент этого запроса:
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) . ')'));
Но до сих пор нет кубиков. Может ли кто-нибудь предоставить правильный синтаксис здесь?
$data = array(1, 2, 3);
$select->where('user_id IN (?)', $data);
В Zend 2
$data = array(1, 2, 3);
$select->where('user_id', $data);
$select = $this->getSql()->select();
$select->where("reports.user_id in ('3','6','22')");
$resultSet = $this->selectWith($select);
//echo $select->getSqlString();die;
return $resultSet;