-1

我正在使用 Yii 和 yii mongoDb 扩展(YMDS)。

我有一个->count()返回正确数量的结果但->findAll()没有的情况。

        // calculate total numbers of document
        Document::model()->setUseCursor(true);
        $total = Document::model()->count($criteria);
        Document::model()->setUseCursor(false);

        $criteria->sort($sort_by, $direction);
        $criteria->limit($limit);
        $criteria->offset($page);


        if (!($docs = Document::model()->findAll($criteria))) {
            throw new CHttpException(404, 'can not find docs');
        }

所以在$total我看到数字 2,但$docs只有 1,可能是什么原因?

4

1 回答 1

1

问题是您误解了offset()参数:

$criteria->offset($page);

偏移量会跳过给定数量的结果,因此如果 $page 为 1(根据 OP 的评论),则将跳过第一个结果。

在实际用于分页时,您希望偏移量类似于:

$criteria->offset($entries_per_page * $current_page_number)

$current_page_number 应该是 0-indexed 所以如果你的 $entries_per_page 是 20 显示页面的偏移量将是:

  • 第一页:0
  • 第二页:20
  • 第三页:40

If you're using Zii widgets like CListView or CGridView they inherit from Yii's CPagination pager class which takes care of offset calculations and more.

于 2012-07-12T13:43:24.730 回答