错误的搜索结果[MongoDB,Yii]

时间:2012-07-11 13:53:01

标签: php mongodb yii

我正在使用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,这可能是什么原因?

1 个答案:

答案 0 :(得分:1)

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

$criteria->offset($page);

Offset会跳过给定数量的结果,因此如果$ page为1(根据OP的注释),将跳过第一个结果。

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

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

$ current_page_number应为0索引,因此如果$ entries_per_page为20,则显示页面的偏移量为:

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

如果您使用的是Zii小部件,例如CListViewCGridView,则它们会继承Yii的CPagination寻呼机类,负责偏移计算等等。