Есть ли способ выполнить SQL String в качестве запроса в Zend Framework?
У меня есть строка вроде этого:
$sql = "SELECT * FROM testTable WHERE myColumn = 5"
теперь я хочу выполнить эту строку непосредственно с помощью парсинга и создания объекта Zend_Db_Table_Select
из нее «вручную». Или, если это возможно, создайте объект Zend_Db_Table_Select
из этой строки, чтобы выполнить этот объект.
Как я могу это сделать? Я не нашел решения для этого в документе Zend.
Если вы создаете объект Zend_DB в начале, вы можете создать запрос, используя это. Взгляните на эту запись в руководстве: http://framework.zend.com/manual/en/zend.db.statement.html
$stmt = $db->query( 'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?', array('goofy', 'FIXED') );
Или
$sql = 'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?'; $stmt = new Zend_Db_Statement_Mysqli($db, $sql);
Вы можете использовать тот же запрос в формате Zend, что и
$select = db->select()->from(array('t' => 'testTable')) ->$where= $this->getAdapter()->quoteInto('myColumn = ?', $s); $stmt = $select->query(); $result = $stmt->fetchAll();
Если вы используете tableGateway, вы можете запустить свой необработанный SQL-запрос, используя этот оператор,
$this->tableGateway->getAdapter()->driver->getConnection()->execute($sql);
где $ sql относится к вашему необработанному запросу. Это может быть полезно для запросов, у которых нет собственного сопоставления ZF2, такого как инструкции TRUNCATE / INSERT SELECT.
Вот пример для ZF1:
$db =Zend_Db_Table_Abstract::getDefaultAdapter(); $sql = "select * from user" $stmt = $db->query($sql); $users = $stmt->fetchAll();