2010-06-13 8 views
0

나는 다음과 같은 쿼리가 : 당신은 내가 $this->view->data = $paginator 을 사용하여 뷰에 데이터를 전달하고있어시피Zend_Table_Db 및 Zend_Paginator 및 Zend_Paginator_Adapter_DbSelect

 $paginator = new Zend_Paginator(
       // $d is an instance of Zend_Db_Select 
       new Zend_Paginator_Adapter_DbSelect($d) 
     );  

     $paginator->getAdapter()->setRowCount(200); 

     $paginator->setItemCountPerPage(15) 
       ->setPageRange(10) 
       ->setCurrentPageNumber($pag); 

     $this->view->data = $paginator; 

: 이제

$this->select() 
->where("`name` LIKE ?",'%'.mysql_escape_string($name).'%') 

내가 Zend_Paginator 코드가를 전에 내가하지 않았을 때 $paginator->getAdapter()->setRowCount(200); 내가 결정할 수 있었다 나는 어떤 데이터가 있거나 없으면, 어떤 데이터가 의미하는지, 어떤 결과가있다면, 쿼리가 어떤 결과를 가지고 있다면 나는 그렇지 않은 경우 사용자에게 보여줄 것이다. 그들에게 메시지를 보여주기 (결과가 없습니다.)

count($paginator)$paginator->getAdapter()->setRowCount(200); 때문에 더 이상 작동하지 않기 때문에이 순간을 어떻게 결정할 수 있을지 모르겠지만 Zend_Paginator가 약 7 초 정도 걸리므로 사용하고 있습니다. 페이지 번호

그럼 어떻게하면 내 검색어에 어떤 결과가 있을까요?

+0

"더 이상 작동하지 않습니다"- 결과로 무엇을 반환합니까? – robertbasic

+0

더 이상 작동하지 않는다는 의미입니다. $ paginator-> getAdapter() -> setRowCount (200);을 사용하고 있기 때문에 항상 동일한 값이 될 것이므로 더 이상 paginator를 계산할 수 없습니다. – Uffo

+0

나는 setRowCount를 사용할 필요가 없었기 때문에 눈먼 추측을했다.''$ paginator-> count()''도움이 되나요? 페이지 번호를 반환합니다. – robertbasic

답변

0

왜 마법 번호로 setRowCount()를 사용 하시겠습니까? Z_P가 사용하는 모든 메소드가 총 행 수를 발견하는 데 오랜 시간이 걸리는 경우, 그런 식으로 무시할 수 있지만 실제 값을 계산할 수 있습니다. 그렇지 않습니까?

대부분의 경우 Z_P는 (내부적으로 하위 쿼리를 통해) 올바른 번호를 자동으로 가져와야합니다. 그 서브 쿼리가 너무 오래 걸리면, 자신의 Zend_Db_Select를 만들어 카운트를 수행하고 setRowCount()에 넘겨 줄 수 있습니다.

+0

그래, 그게 주요 문제는 실제로 setRowCount(),하지만 여기에 http://tinypic.com/r/vesy9c/6에서 볼 수 있듯이 계산 쿼리에 많은 시간이 걸리고, 테이블 또한 정말 크고, 백만 행 , 더 나은 카운트 쿼리를 작성하도록 도와 줄 수 있습니까? 아니면 어떻게해야합니까? – Uffo

+0

올바르게 보았을 때, 0.00007 초가 아닌 7 초 (7 * 10^(- 5))입니다. 그 그림에 3 개의 쿼리가 모두 함께 걸리는 시간은 2.7 초입니다. – robertbasic

+0

이것들은 7 초입니다. 다시 테스트했습니다 :) – Uffo