Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 错误的搜索结果[MongoDB,Yii]_Php_Mongodb_Yii - Fatal编程技术网

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

Php 错误的搜索结果[MongoDB,Yii],php,mongodb,yii,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()-

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

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

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

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

$criteria->offset($entries_per_page * $current_page_number)
$current_page_number应为0索引,因此如果每页$entries_为20,则显示页的偏移量为:

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

如果您使用的是Zii小部件,如或它们继承自Yii的pager类,该类负责偏移量计算等。

它随数量的限制而变化。在这种情况下,它等于20$页面是1$sort\u by is EMongoCriteria::sort\u DESC,当我用->offset注释行时,您不知何故关闭了,一切正常:)进一步了解函数是的,问题在offset中,计算错误。谢谢@raina77owYes这是我在上面的评论中写的,谢谢澄清。