Zend_Paginator bug
A minap komolyan meggyűlt a bajom a Zend_Paginator komponenssel. Egy HAVING utasítással egészítettem ki a Zend_Db_Select-et melyet a paginatornak akartam adni paraméterként, de állandóan arra panaszkodott, hogy ismeretlen oszlopra hivatkozok a having kifejezésben:
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘c’ in ‘having clause’
Lefuttattam a query-t közvetlenül MySQL-ben, de ott nem volt tapasztalható a hiba, így a Zend Framework kódját és a fórumokat kezdtem el bújni, majd rövidesen rá is bukkantam a megoldásra: [Zend_Paginator] Bug when using complex Zend_Db_Select. A rendellenesség a Zend_Paginator_Adapter_DbSelect setRowCount() függvényében keresendő, mivel ez a függvény már “lebutítva” kapja meg a lekérdezést, amely ekkor már csak egy oszlopot tartalmazhat. Ha nem így történik akkor kivételre fut. Megértve, hogy pontosan mi okozza a hibát elég volt annyit alakítani a kódon, hogy a paginatornak nem az eredeti lekérdezést adtam át, hanem egy butítottat:
// $select1-ben van a komplex lekérdezés $select2 = $company->select()->setIntegrityCheck(false); $select2->from($select1, array('COUNT(*)')); $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbSelect($select2));
Álljon hát itt ez a bejegyzés, hogy máskor könnyen visszakereshető legyen a megoldás!
Fotók


