2013-03-22 77 views
3

我在使用ZF2中paginator DbSelect適配器中的DISTINCT查詢時遇到了一些問題。我的步驟是。ZF2中的Zend Paginator Adapter 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 \分頁程序\適配器\ DbSelect

$result = new DbSelect($select, $this->adapter, $this->resultSetPrototype); 

現在的問題是,如果我通過 echo str_replace('"', '', $select->getSqlString()); 打印SQL查詢,並在MySQL運行此查詢它顯示12個結果。

$result->count();顯示55結果。

我試圖找出問題,發現也許Zend \ Paginator \ Adapter \ DbSelect count()功能是越野車。

當我在Zend \ Paginator \ Adapter \ DbSelect count()函數中打印sql查詢時,它從查詢中刪除了DISTINCT子句並添加了它自己的計數列c。

SELECT COUNT(1) AS c FROM myTable;

請建議我應該怎麼辦?

+0

請參閱:http://stackoverflow.com/questions/6733117/how-to-use-distinct-in-zend-db-model – Arvind 2013-03-25 08:54:42

回答

2

是Manish你是對的計數功能是越野車。它留下了截然不同的分組。我也遇到了同樣的問題。雖然沒有找到解決方案。

正如人們所看到的計數功能如何https://github.com/zendframework/zf2/blob/master/library/Zend/Paginator/Adapter/DbSelect.php

計算,如果您使用的條款不同或組的數量可能會有所不同。

有兩種解決方案。 1)提出問題,等待他們修理東西 2)編寫自己的適配器

我會去第二個。 ZF2最令人敬畏的事情之一就是它可以根據您的需求爲您提供靈活的寫入所有內容。所以繼續前進,並創建自己的適配器

+1

https://gist.github.com/graphicmist/5733760 這個工作對我來說不錯 – graphicmist 2013-06-08 02:43:56

+0

謝謝graphicmist :), 我同意你的看法。我只是擴展了DBSelect類並根據需要對其進行了修改。 – Manish 2013-09-16 11:13:12

+1

可能是你可以選擇正確的答案,並給我一些回購點 – graphicmist 2013-09-28 18:24:34

相關問題