У меня есть следующий запрос:
$this->select()
->where("`name` LIKE ?",'%'.mysql_escape_string($name).'%')
Теперь у меня есть код Zend_Paginator:
$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->view->data = $paginator
До того, как у меня не было $paginator->getAdapter()->setRowCount(200);
, я мог бы определить, есть ли у меня какие-либо данные или нет, что я имею в виду с данными, если запрос имеет некоторые результаты, поэтому, если у запроса есть некоторые результаты, я показываю пользователю, если нет, Мне нужно показать им сообщение (Нет результатов!)
Но в этот момент я не знаю, как я могу определить это, так как count($paginator)
больше не работает из-за $paginator->getAdapter()->setRowCount(200);
, и я использую это, потому что для Zend_Paginator для подсчета страницы требуется около 7 секунд числа.
Итак, как я могу найти, если у моего запроса есть какие-то результаты?
Зачем вам устанавливать значениеRowCount() на магическое число? Если какой-либо метод Z_P использует для обнаружения общего количества строк, занимает много времени, вы можете переопределить его таким образом, но вы хотите вычислить фактическое значение, не так ли?
В большинстве случаев Z_P должен автоматически получать правильное число (внутри, через подзапрос). Если этот подзапрос занимает слишком много времени, вы можете попытаться создать свой собственный Zend_Db_Select для выполнения подсчета и передать его в setRowCount().