我在使用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'
这显然会导致查询不正确。有谁知道为什么会这样做以及如何阻止它?
答案 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对象的子句。