首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CActiveDataProvider中缓存

如何在CActiveDataProvider中缓存
EN

Stack Overflow用户
提问于 2014-01-11 11:38:36
回答 1查看 1.2K关注 0票数 2

我想缓存CActiveDataProvider实例的DB结果.

没有缓存CActiveDataProvider?还是一切都很好?

我在控制器的操作中准备数据提供程序,然后在CGridView中使用数据提供程序,稍后在某些视图中使用。

这是我的代码:

代码语言:javascript
复制
    $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']),
            )
        ));

但是没有结果:查询没有被缓存。

EN

回答 1

Stack Overflow用户

发布于 2014-01-12 09:23:29

如果使用分页,则需要将缓存queryCount属性增加到2,前者用于计数(用于分页),后者用于获取数据。

将代码更改为:

代码语言:javascript
复制
$dataProvider = new CActiveDataProvider( Employee::model()->cache(2000,null,2)

更多

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21061756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档