2

カスタム 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(*)」と比較して、このパフォーマンスに関してはよくわかりません。

4

2 に答える 2

0

私のために働いたもの:
$select->columns(array( 'id'=>'id', 'nr'=>new \Zend\Db\Sql\Expression('COUNT(*)')));

于 2013-11-15T17:10:02.980 に答える