Symfony Doctrine sfDoctrinePager и LIMIT

У меня есть таблица с 500 пользователями. Мне нужно показать последних 100 зарегистрированных пользователей на моей домашней странице с разбивкой на страницы. Поэтому я использую symfony и разбиение на страницы с помощью sfDoctrinePager.

Действие:

    $query = UserTable::getLast100UsersQuery();
    $pager = new sfDoctrinePager('User', 10);
    $pager->setQuery($query);
    $pager->setPage($request->getParameter('page', 1));
    $pager->init();

Модель:

    static public function getLast100UsersQuery() {
    return Doctrine_Core::getTable('User')->limit(100);
    }

Моя проблема в том, что LIMIT(100) в модели игнорируется, а нумерация страниц предназначена для всех 500 пользователей. Мне просто нужны последние 100 пользователей, а не все.

Заранее спасибо за любую помощь ребята


person Marlene75    schedule 11.03.2012    source источник


Ответы (1)


Я делаю пейджинг немного по-другому. В моей модели запрос выглядит примерно так:

public function getLast100UsersQuery($page = null)
     {
        $q = Doctrine_Query::create()
        ->from("User")
        ->limit(100);

       $pager = new sfDoctrinePager('User', 10);
       $pager->setQuery($q);
       $pager->setPage($page, 1);
       $pager->init();

       return $pager;
      }

в действии я получаю запрос:

$pager = $this->pager = Doctrine_Core::getTable('user')->getLast100UsersQuery( $request->getParameter('page'));

все время я делаю пейджинг таким образом, и у меня нет проблем :)

person plamen    schedule 14.03.2012
comment
в этом случае ему нужно воспроизвести свои параметры, такие как имя таблицы и другие. Но в своих проектах я так разбиваю страницы и работаю на 100% - person plamen; 14.03.2012