Zend Framework 2: подзапросы

Недавно обновленный ZF2 до версии 2.1.4 с API базы данных изменился http://framework.zend.com/security/advisory/ZF2013-03

Теперь код, который я использовал для подзапроса, был исключением:

$sub = new Select('md_type'); $sub->columns(array(new Expression('COUNT(mt2.parent_id) as total'))) ->where(array( new \Zend\Db\Sql\Predicate\Expression('mt2.parent_id = mt1.id') )) ; $subquery = new \Zend\Db\Sql\Expression("({$sub->getSqlString()})"); $select = new \Zend\Db\Sql\Select('mt1'); $select->columns(array('*', 'cnt' => $subquery)); 

$ sub-> getSqlString () ——> Примечание. Попытка указать значение в Zend \ Db \ Adapter \ Platform \ Mysql без поддержки расширения / драйвера может привести к уязвимостям системы безопасности в рабочей среде.

Я не могу найти альтернативный способ использования подзапросов. Скажите, пожалуйста, как быть, как использовать подзапросы сейчас. Благодаря!


Это ошибка: https://github.com/zendframework/zf2/pull/4068

В ближайшем будущем, я думаю, это исправлено.

Solutions Collecting From Web of "Zend Framework 2: подзапросы"

Пожалуйста, попробуйте это.

 $sql = new Sql($this->_adapter); $mainSelect = $sql->select()->from('mt1'); $subQry = $sql->select() ->from('md_type') ->columns(array('orderCount' => new \Zend\Db\Sql\Expression('COUNT(md_type.parent_id)'))) ->where('mt2.parent_id = mt1.id'); $mainSelect->columns( array( 'id', 'total' => new \Zend\Db\Sql\Expression('?', array($subQry)), ) ); $statement = $sql->prepareStatementForSqlObject($mainSelect); $comments = $statement->execute(); $resultSet = new ResultSet(); $resultSet->initialize($comments); return $resultSet->toArray(); 

Ссылка: ZF2 – подзапросы

Я столкнулся с этой же проблемой, пытаясь запустить подзапросы с существующим. Я написал blogpost с примерами кода, которые расскажут вам, как настроить его. http://aronkerr.blogspot.com/2013/08/zf2-sql-exists-sub-query-using-zf2.html?m=1