2013-02-14 4 views
0

Я выписал очень простой запрос в использовании Sql объекта ZF2 в ...Zend Framework 2 Sql Выберите добавление "кавычки в запросе

$sql = new Sql($this->adapter); 
$select = $sql->select() 
->from('school') 
->where(array("id = ?" => $id)); 

эхо $ select-> getSqlString();

Однако запрос возвращает это содержит «кавычки» вокруг имени таблицы ...

SELECT "school".* FROM "school" WHERE id = '4' 

Это, очевидно, делает запрос неверен. кто-нибудь знает, почему он делает это и как это остановить?

+1

Это не проблема, запрос все равно должен выполняться нормально. Это как раз то, как он получается из этого метода. Попробуйте выполнить его, и вы увидите :) – Andrew

+0

Спасибо, Андрей, я не мог заставить его выполнить, не выкинув ошибку sql-запроса. Единственное, что я видел, выглядело некорректно, - это кавычки в выводе запроса. – jonadams51

+0

Какая ошибка, была ли это, безусловно, ошибка SQL sytax? что должно работать нормально, так как это – Andrew

ответ

1

ИМХО метод getSqlString - это нонсенс. Если вы заглянете внутрь, вы увидите, что он не передает информацию о драйвере в функцию, отображающую строку SQL. В результате рендеринг принимает некоторый шаблон запроса по умолчанию и просто цитирует значение вместо использования шаблона Mysql.

Попробуйте использовать это:

$select = $sql->select() 
    ->from('school') 
    ->where(array("id = ?" => $id)); 
$sql = new Sql($this->adapter); 
$selectString = $sql->getSqlStringForSqlObject($select); 

Если нашли это после нескольких часов безуспешных попыток, чтобы сделать «предел» положение правильно, используя только Zend \ Db \ Sql \ Выбрать объект.