CActiveRecord findAll() - 结果不一致

时间:2014-07-11 15:34:25

标签: php mysql yii yii-cactiverecord

我有一个使用CDbCriteria获取结果的操作,以及offsetlimit的使用情况。每次运行该函数时,都会根据当前偏移量和收到的结果数给出一个新的偏移量。每次运行也限于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个结果。

导致结果不一致的原因是什么?我的代码中的某个地方是不是很糟糕?

0 个答案:

没有答案