2016-03-11 2 views
1

Я работаю с Zend 1 (1.12), и я использую класс Zend_Paginator для отображения результатов запроса на веб-странице. Тем не менее, существует большое количество записей (более одного миллиона), и в большинстве случаев, в большинстве случаев, они нуждаются или хотят искать самые последние 1000 или около того записей.Zend 1 Paginator limit

Проблема заключается в том, что у меня уже есть часть веб-страницы, которая устанавливает значение «на страницу», которое по своей сути создает предел (и смещение, если они больше не находятся на странице «1» поиска.)

В принципе, я спрашиваю, есть ли способ сообщить Zend_Pagintor «только получить первые 1000 записей, а затем разбивать их на страницы на основе выбора пользователя на странице»?

Я попытался передать предельный параметр в интерфейс, который я использую, но Zend_Paginator, кажется, игнорирует это, извлекает все результаты и затем разбивает на них страницы.

function getRecords($currentPage) 
{ 
    $select = "select * from table where user_id = 1 limit 1000"; 
    /* $select is actually a Zend_Db_Table_Select object, not a string. */ 
    $paginator = new Zend_Paginator::factory($select); 
    $paginator->setItemCountPerPage(25); 
    $paginator->setCurrentPageNumber($currentPage); 

    return $paginator; 
} 

(в $ выбрать, очевидно, заполнителем.)

+0

Я не использовал завод, как раньше. Я думал, вам нужно создать запрос или передать строку, установленную для него. – Gavin

+0

Простите, я не был ясен. Переменная $ select в этом случае представляет собой запрос, созданный с использованием другой функции. Текст этого запроса - это то, о чем говорится. Но это фактически объект Zend_Db_Table_Select. –

ответ

0

Попробуйте создать представление SQL из вашего ограниченного запроса:

CREATE OR REPLACE VIEW table_view AS 
SELECT * 
FROM table 
WHERE user_id = 1 
LIMIT 1000 

Это представление будет возвращать только строки, которые вы хотите (1000 строк в этом case), затем переключите Zend_Db_Table_Select на это представление и создайте paginator, как ваш метод getRecord.

2

Установить подсчет общего числа строк вручную

$select = "select * from table where user_id = 1"; 
$paginator = new Zend_Paginator::factory($select); 
$paginator->getAdapter()->setRowCount(1000); 
... 
Смежные вопросы