0

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 人のユーザーが必要です。

助けてくれてありがとう

4

1 に答える 1

0

少し違う方法でページングを行います。私のモデルでは、クエリは次のようになります。

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'));

私はいつもこの方法でページングを行っていますが、問題はありません:)

于 2012-03-14T03:28:59.960 に答える