2014-01-11 6 views
2

CActiveDataProvider 인스턴스에 대한 DB 결과를 캐시하고 싶습니다.Yii CActiveDataProvider에서 캐시하는 방법

캐시 없음 CActiveDataProvider? 또는 모두 잘 작동합니까?

컨트롤러의 동작에서 데이터 공급자를 준비한 다음 나중에 일부보기에서 데이터 공급자를 CGridView에서 사용합니다.

이 내 코드 :

$criteria = new CDbCriteria; 
    $criteria->with = array('person', 'department', 'position', 'policy'); 
    $criteria->condition='t.companyID=:companyID AND t.state = :state'; 
    $criteria->params = array(':companyID'=>$companyID, ':state'=>VersionedActiveRecordState::ACTIVE); 
$dataProvider = new CActiveDataProvider(Employee::model()->cache(2000,null), array(
      'criteria' => $criteria, 
      'totalItemCount'=>200, 
      'sort' => array(
       'defaultOrder' => 'person.lastName ASC, person.firstName ASC, person.patronymic ASC', 
       'attributes' => array(
        'ID', 
        'code', 
        'grade', 
        'employeeFullName' => array(
         'asc' => 'person.lastName ASC, person.firstName ASC, person.patronymic ASC', 
         'desc' => 'person.lastName DESC, person.firstName DESC, person.patronymic DESC', 
        ), 
        'departmentTitle' => array(
         'asc' => 'department.title ASC', 
         'desc' => 'department.title DESC', 
        ), 
        'positionTitle' => array(
         'asc' => 'position.title ASC', 
         'desc' => 'position.title DESC', 
        ), 
        'scheduleTitle' => array(
         'asc' => 'schedule.title ASC', 
         'desc' => 'schedule.title DESC', 
        ), 
        'policyTitle' => array(
         'asc' => 'policy.title ASC', 
         'desc' => 'policy.title DESC', 
        ), 
       ), 
      ), 
      'pagination' => array(
       'pageSize'=> Yii::app()->user->getState('employee_pageSize',Yii::app()->params['defaultPageSize']), 
      ) 
     )); 

하지만 아무 소용이

: 쿼리 캐시되지 않습니다.

답변

1

당신이 매김를 사용하는 경우 2로 캐시를 queryCount 속성을 증가해야합니다, 이전의 쿼리는 계산입니다 (매김에 사용) 및 데이터를 가져 오는에 대한 후자.

$dataProvider = new CActiveDataProvider(Employee::model()->cache(2000,null,2) 

more

:

은 당신의 코드를 변경

관련 문제