我正在使用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,这可能是什么原因?
答案 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,则显示页面的偏移量为:
如果您使用的是Zii小部件,例如CListView或CGridView,则它们会继承Yii的CPagination寻呼机类,负责偏移计算等等。