Я использую Zf 1.10 в проекте и очень успешно использовал Zend_Paginator вместе с запросами Zend_DbTable до этого бита.Zend Paginator отображает неправильный счет страницы, когда запрос имеет «отличный»
Запрос требует ключевого слова DISTINCT для удаления повторяющихся строк, созданных соединением, но когда я его добавляю, в этом случае страница с ошибками отображает навигацию для двух страниц результатов, когда есть только одна страница результатов. Некоторые копания показывают, что он выполняет два запроса, один для набора результатов, после которого я (77 строк), а другой - для подсчета. Но второй запрос, созданный магией Zend, не включает ключевое слово DISTINCT, поэтому счетчик возвращает 112 строк вместо 77 строк.
Вот соответствующему биту
$select = $this->select()
->setIntegrityCheck(false)
->from('companies')
->distinct()
->join('project_team', 'companies.companyID = project_team.companyID', null)
->join('project_team_roles', 'project_team.roleID = project_team_roles.roleID', null)
->join('projects', 'projects.projectID = project_team.projectID', null)
->where('project_team_roles.isArchitect')
->where('companies.companyName LIKE ?', '%' . $str . '%')
->where('projects.islive AND NOT projects.isDeleted')
->order('companies.companyName');
$adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
$paginator = new Zend_Paginator($adapter);
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage(100);
return $paginator;
Там нет ничего плохого с запросами это порождающими, кроме этого игнорирования DISTINCT положения в запросе счета. Если вы удаляете бит -> distinct(), все работает отлично - 112 строк и разбиение на страницы - все супер, за исключением того, что данные имеют повторяющиеся строки.
Я вижу сообщения об ошибках, уходящих справедливые способы о подобных вопросах, но они помечены как фиксированные в более ранних версиях ZF
? Является ли это известный глюк? Есть ли что-нибудь, что я могу с этим поделать, не написав свою собственную разбивку на страницы. Это не значит, что написание нумерация страницы является особенно сложной задачей, но это означает, что этот бит будет несовместимым с остальной частью проекта
Большого спасибо
Ian
EDIT - Найден обходным путем, отправил в ответ ниже.
Тогда вы запрашиваете ALL результат и сохранить их в массиве не очень эффективно – Chris