2013-03-22 2 views
3

У меня возникают проблемы при использовании запроса DISTINCT в диалоговом окне Paginator DbSelect в ZF2. Мои шаги.Zend Paginator Adapter DbSelect Проблема DISTINCT в ZF2

Сначала я создал объект 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 \ адаптер \ DbSelect

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

Теперь вопрос заключается в том, что если я печатаю SQL запрос через echo str_replace('"', '', $select->getSqlString()); и запустить этот запрос на MySQL это показывает 12 результатов ,

Но $result->count(); показан результат 55.

Я попытался выяснить проблему и обнаружил, что функция Zend \ Paginator \ Adapter \ DbSelect count() не работает.

Когда я печатал запрос sql в Zend \ Paginator \ Adapter \ DbSelect count(), он удаляет предложение DISTINCT из запроса и добавляет свой собственный столбец c.

SELECT COUNT(1) AS c FROM myTable;

Пожалуйста, предложите что я должен делать?

+0

Refer: http://stackoverflow.com/questions/6733117/how-to-use-distinct-in-zend-db-model – Arvind

ответ

2

Да Маниша вы правы, функция подсчета ошибок глючит. он оставляет отдельные и групповые предложения. Я также столкнулся с той же проблемой. Не нашел решение для этого, хотя.

Как можно видеть, как https://github.com/zendframework/zf2/blob/master/library/Zend/Paginator/Adapter/DbSelect.php

функция подсчета вычисляет счетчик может отличаться, если вы используете отчетливый или группу пунктов.

Для этого есть два решения. 1) поднять вопрос и дождаться их, чтобы исправить вещь 2) Напишите свой собственный адаптер

Пойду со вторым. Одна из самых удивительных вещей в ZF2 заключается в том, что она обеспечивает гибкость написания всего в соответствии с вашими потребностями. SO вперед и создать свой собственный адаптер

+1

https://gist.github.com/graphicmist/5733760 Эта работа для меня хорошая – graphicmist

+0

Thanks graphicmist :), Я согласен с вами. Я просто расширил класс DBSelect и изменил его в соответствии с моей потребностью. – Manish

+1

Возможно, вы можете выбрать правильный ответ и дать мне несколько точек репо – graphicmist