sfPropelPager уменьшить количество запросов - PullRequest
0 голосов
/ 01 декабря 2011

Я работаю в проекте Symfony и использую sfPropelPager для отображения постраничного списка элементов.Проблема в том, что при большом количестве данных для списка (то есть тысячах регистров) это делает запрос к базе данных для каждой страницы, чтобы показать !!!! Это означает около 100 дополнительных запросов в моем случае,и это недопустимо.

Отображение некоторых из моего кода: функция, которая возвращает объект пейджера

$pager = new sfPropelPager('MyTable',sfConfig::get('sfPropelPagerLines'));
$c = new Criteria();
$c->add('my_table_field',$value);
$c->addDescendingOrderByColumn('date');
$pager->setCriteria($c);
$pager->init();
return $pager;

Итак, пожалуйста, если вы знаете способ получить все результаты только с однимзапрос, это было бы отличным решением для моей проблемы.В противном случае я должен реализовать этот список с помощью вызова ajax для каждой страницы, которую пользователь хочет видеть

Большое спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2011

Наконец-то я не получил решение проблемы, мне пришлось реализовать список с помощью вызова AJAX, вызвав функцию, которая возвращает запрошенную страницу, поэтому при загрузке страницы нет запроса для этогосписок замедляет работу пользователя.

Спасибо, все равно, чтобы помочь мне:)

0 голосов
/ 07 декабря 2011

Я не уверен, что понимаю вашу проблему, но, в любом случае, избегайте использования Criteria. Попробуйте сделать запросы с помощью ModelCriteria API: http://www.propelorm.org/reference/model-criteria.html.

Для каждой разбитой на страницы страницы выполняется запрос к базе данных, это стандартное поведение для всех известных мне пейджеров. Если это связано со связанными объектами (при условии, что вы хотите отобразить информацию из отношений), вы можете создать запрос, который связывает эти объекты перед разбиением на страницы, таким образом, вы получите один запрос на страницу для всех ваших данных для отображения. Прочитайте этот документ, например: http://www.propelorm.org/documentation/03-basic-crud.html#query_termination_methods

...