ZF2 の paginator DbSelect アダプターで DISTINCT クエリを使用しているときに問題に直面しています。私の歩みは。
最初に Select オブジェクトを作成しました。
$select = new Select();
$select->columns(
array(
'personId' => new Expression("DISTINCT $this->table.person_id"),
'first_name', 'middle_name', 'last_name'));
$select->from($this->table);
次に、このオブジェクトを Zend\Paginator\Adapter\DbSelect に渡しました
$result = new DbSelect($select, $this->adapter, $this->resultSetPrototype);
今の問題は、SQLクエリを印刷
echo str_replace('"', '', $select->getSqlString());
してmysqlでこのクエリを実行すると、12の結果が表示されることです。
しかし$result->count();
、55の結果を示しています。
問題を解明しようとしたところ、おそらく Zend\Paginator\Adapter\DbSelectcount()
関数にバグがあることがわかりました。
Zend\Paginator\Adapter\DbSelectcount()
関数で SQL クエリを出力すると、クエリから DISTINCT 句が削除され、独自のカウント列が追加されました c.
SELECT COUNT(1) AS c FROM myTable;
どうすればいいですか?