我使用TableGateway和附加的自定義RowGateway對象。如果我想使用TableGateway-> getSql() - > select()返回的對象來獲取記錄計數,則附加的RowGateway對象會報告結果集中缺少主鍵。ZF2 ResultSet和計數性能
$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 \異常\ RuntimeException的:在處理主鍵數據,公知的鍵XXX未在數據陣列中發現
我可以通過發出一個圍繞工作,它正常(即非計數)選擇:
$result = $tablegateway->selectWith($select);
$count = $result->count();
但不確定這種性能方面與'SELECT COUNT(*)'相比。
請問您定製RowGateway擴展的Zend \ DB \ RowGateway \ AbstractRowGateway? –
是的,但如果我使用默認的RowGateway,問題也存在。我現在發現了另一種解決方法:我創建了兩個TableGateways,一個用於選擇和計數,另一個用於寫入,後者使用我的AuditingRowGateway記錄所有更改。 – Arthur
你在使用RowGateway還是TableGateway?你的例子令人困惑......看起來像TableGateway NOT Row .. – Andrew