php - ZF2 ResultSet 和计数性能

标签 php database zend-framework2

我正在使用带有附加自定义 RowGateway 对象的 TableGateway。如果我想使用 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(*)”相比的性能。

最佳答案

即使您只需要一个计数值,如果在列数组中包含主键,它应该可以工作。

$select->columns(array($primkey, 'num' => new \Zend\Db\Sql\Expression('COUNT(*)')));

关于php - ZF2 ResultSet 和计数性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15785570/

相关文章:

php - 如何获取 Woocommerce 变体 ID?

mysql - 第 2 行存在语法错误 (1064)

php - zf2.如何处理循环 cli 脚本中 mysql 连接的超时?

php - 如何在 zf2 的 Controller 插件中设置 View 变量?

zend-framework2 - ZF2 : Zend Framework 2 - how to render output without layout

php - 将 PHP 浮点/十进制值插入 MySQL

PHP/MySQL : Updating nonexistent column value

php - 如何向 PHP 发送简短的 Ajax 请求、获得确认并且无需等待完整处理完成

database - CRUD 和 CRUDL 之间有什么区别?

php - 将多个 foreach MySQL 插入语句与 PHP 数组数据合并为一个