Zend Framework 2 Sql \ Select将“引号添加到查询中

时间:2013-02-14 14:37:09

标签: zend-framework2

我在使用ZF2的Sql对象时写了一个非常简单的查询...

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

echo $ select-> getSqlString();

但是,返回的查询在表名...

周围包含“引号”
SELECT "school".* FROM "school" WHERE id = '4'

这显然会导致查询不正确。有谁知道为什么会这样做以及如何阻止它?

1 个答案:

答案 0 :(得分: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 \ Select对象的子句。