我将 TableGateway 与附加的自定义 RowGateway 对象一起使用。如果我想使用 TableGateway->getSql()->select() 返回的对象来获取记录计数,附加的 RowGateway 对象会抱怨结果集中缺少主键。
$tablegateway = new TableGateway('table', $adapter, new RowGatewayFeature(new AuditingRowGateway($primkey, 'table', $adapter), new ResultSet());
$select = $tablegateway->getSql()->select();
$select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));
$row = $tablegateway->selectWith($select)->current();
结果:Zend\Db\RowGateway\Exception\RuntimeException: 处理主键数据时,在数据数组中没有找到一个已知的键xxx
我可以通过发出正常(即非计数)选择来解决它:
$result = $tablegateway->selectWith($select);
$count = $result->count();
但与“SELECT COUNT(*)”相比,不确定这种性能方面的情况。