ZF2 - TableGateway与Mysqli驱动程序

时间:2015-09-18 12:00:28

标签: php mysqli zend-framework2

我试图在ZF2中使用TableGateway类和Mysqli驱动程序,但是遇到了很多问题。

由于某种原因,我用变量添加的任何Where子句都不会被引用,并且在执行查询时它会抛出错误:

  

使用sql:...

无法生成语句

给我带来问题的代码是:

<?php

class MyTable extends Zend\Db\TableGateway\TableGateway
{
    public function get_count($id)
    {
        $count = $this->select(function (Zend\Db\Sql\Select $select) use ($id) {
            $select->columns([
                'count' => 'COUNT(field)',
            ]);
            $select->join(['alias1' => 'other_table'], 'thing = alias1.thing', []);
            $select->where([
                'main_table.id' => $id,
                'alias1.active' => 1,
            ]);
        })->current();

        return $count;
    }
}

当我查看错误时,它只显示?所提供的实际值应该是。

如果,我直接从适配器中选择:

// build select object similar to above example
$selectString = $sql->getSqlStringForSqlObject($select);
$results = $this->dbAdapter->query($selectString, Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);

然后它完美无缺。但是我必须使用这个getSqlStringForSqlObject我觉得很奇怪。在我的其他项目中,我正在使用PDO驱动程序而且我从未遇到过这样的问题,但是对于这个项目,mysqli驱动程序是必需的。

如何正确地将值提供给引用的位置?

0 个答案:

没有答案