我有一个使用CDbCriteria
获取结果的操作,以及offset
和limit
的使用情况。每次运行该函数时,都会根据当前偏移量和收到的结果数给出一个新的偏移量。每次运行也限于5个结果。
public function actionGetCompanyActiveSites($startIndex = 0){
$company_id = $_GET['company_id'];
if(isset($_GET['start_index']))
$startIndex = $_GET['start_index'];
$criteria = new CDbCriteria();
$criteria->with = array('eventDetails' => array('joinType' => 'STRAIGHT_JOIN', 'with'=>array('event'=>array('joinType'=>'STRAIGHT_JOIN'))));
$criteria->together = true;
$criteria->addCondition("event.company_id = $company_id AND active = 1 ");
$criteria->order = "name ASC";
$totalRows = Venue::model()->count($criteria);
$criteria->offset = $startIndex;
$criteria->limit = 5;
$companySites = Venue::model()->findAll($criteria);
$startIndex += count($companySites);
echo $this->renderPartial('_activeSites', array('companySites'=>$companySites, 'startIndex'=>$startIndex, 'totalRows'=>$totalRows), false, true);
Yii::app()->end();
}
前两次运行它每次运行得到5个结果正确应该。但是,例如在第3次运行时,它只获得2次,第4次运行1次,第5次运行3次等。对于当前情况,我有21个结果可用。它应该在前4次运行中获得5个结果,然后在最后5次运行中获得1个结果。
导致结果不一致的原因是什么?我的代码中的某个地方是不是很糟糕?