Sorgu "farklı" olduğunda Zend paginator yanlış sayfa sayısını görüntüler

0 Cevap php

Ben bir proje üzerinde ZF 1.10 kullanıyorum ve bu bit kadar oldukça başarılı Zend_DbTable sorgu ile birlikte Zend_Paginator kullanarak edilmiştir.

Sorgu bir birleşim tarafından oluşturulan yinelenen satırları kaldırmak için DISTINCT anahtar sözcük gerektirir, ama ben bunu eklediğinizde sonuçlarının bir sayfa sadece aslında olduğunda, paginator yanlış sonuç iki sayfaları için navigasyon görüntüler. Etrafında kazma Bazıları sayısı almak için iki sorgu, ben (77 satır) sonra ben sonuç kümesi için ve başka bir yürütme olduğunu ortaya koymaktadır. Ama Zend sihirli tarafından oluşturulan ikinci sorgu DISTINCT anahtar sözcüğü içermez ve böylece sayısı 112 satır yerine 77 satır döndürür.

Burada ilgili biraz

$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;

Bunun sayısı sorguda DISTINCT maddesini görmezden geliyor dışında, üreten bulunuyor sorgu ile yanlış bir şey yok. Eğer kaldırırsanız - veri yinelenen satırları vardır hariç, 112 satır ve sayfalama tüm süper -> farklı () tüm büyük çalışır ısırdı.

Ben geri benzer konular hakkında adil bir yol gidiyor hata raporları görmek ama ZF önceki sürümlerinde sabit onlar gibi Mimlendik

? Bu bilinen bir yakaladım mıdır? Ben kendi sayfalamayı yazmadan bu konuda yapabileceği bir şey var mı. Bu sayfalamayı yazma, özellikle zorlu olduğunu değil, ama bu biraz projenin geri kalanından tutarsız olacağı anlamına gelir

Çok teşekkürler

Ian

EDIT - bir çözüm buldunuz, aşağıda cevap olarak yayınlanmıştır.

0 Cevap