Php 错误的搜索结果[MongoDB,Yii]
我正在使用Yii和Yii mongoDb扩展(YMDS) 我有一个例子,当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()-
->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这是我在上面的评论中写的,谢谢澄清。