我目前在Zend 1.x中准备了一个查询。选择查询在类中形成,正如您所期望的:
我将按如下方式设置查询:
// prepare query
$this->getDbTable()->select()
->setIntegrityCheck(false)
->from(array('mdt' => 'meta_data_type'))
->where('id = :id')
->bind(
array(
':id' => $id
)
);
// report SQL for debugging
echo $this->getDbTable()->select()->__toString();
正如您所看到的,这并不是最难的查询。但是:返回的SQL如下:
SELECT `meta_data_type`.* FROM `meta_data_type`
有人能告诉我如何调试这个吗?在我看来这是正确的。我试着在网上学习这些例子,但考虑到我们的系统方法(位于Mapper模式中,使用非标准的表命名等),这并没有太大帮助。
仅供参考:它返回的实际数据与您对"完整数据集"的"获取行"操作的期望相匹配。。如:第一行形成良好。它只是不受where子句的约束(正如您所期望的那样,SQL中缺少它!)。
仅供参考2:绑定/哪里不是问题所在。如果我把整个结尾改成:
->where('id = 2');
它仍然没有在条款中显示这一点。
您的查询看起来不错,尽管这不是我在ZF1中使用的语法。但是,通过第二次为echo调用$this->getDbTable()->select()
,您将输出一个没有任何params的新查询。
最简单的修复方法是将其分配给一个变量:
// prepare query
$select = $this->getDbTable()->select()
->setIntegrityCheck(false)
->from(array('mdt' => 'meta_data_type'))
->where('id = :id')
->bind(
array(
':id' => $id
)
);
// report SQL for debugging
echo $select;