数据库内容缓存在表单下拉列表中使用它

时间:2012-11-13 07:44:13

标签: yii

我想在yii中缓存数据库内容,并在Yii下拉列表中使用该数据。在下拉列表中,要从数据库加载国家/地区名称。 (有2个表用户和国家)。在用户表单中需要下拉列表。使用缓存从国家/地区表中选择的。放置查询的位置以及何时可以在用户表单中使用缓存结果?

1 个答案:

答案 0 :(得分:1)

为了从表中缓存结果然后在下拉列表中使用它,您需要首先在配置文件中设置缓存,如权威指南的Caching Overview中所述。如果你想使用memCache,你可以像这样设置它;

array(
    ......
    'components'=>array(
        ......
        'cache'=>array(
            'class'=>'system.caching.CMemCache',
        ),
    ),
);

Yii可以使用上面的“缓存概述”链接中列出的许多差异缓存。

然后,您需要使用Yii的data caching功能。您可以在user / _form.php视图中执行此操作,例如;

...

echo $form->dropDownList($model,'country_id',CHtml::listData(Country::model()->cache(1000)->findAll(),'id','name'));

...

但是在你的控制器中执行此操作的MVC方式越多,这样的事情就会起作用;

在你的UserController中:

...

public function actionUpdate()
{
    ...

    $this->render('update',array(
        'model'=>$model,
        'countryList=>Country::model()->cache(1000)->findAll();,
    );
}

...

在您的user / update.php视图中:

...

echo $this->renderPartial('_form', array('model'=>$model,'countryList'=>$countryList));

...

在您的user / _form.php视图中:

...

echo $form->dropDownList($model,'country_id',CHtml::listData($countryList,'id','name'));

...

上面的示例对缓存没有依赖性,因此缓存的值将保持有效,直到时间(在这种情况下为1000秒)到期。

要阅读有关使用缓存依赖关系的更多信息,您可以阅读数据缓存文档的Cache Dependency部分。

[修改

如果您需要安装memcached,并且在Windows上使用xampp,这是一个很好的指南,可以让它正常工作:HOW TO INSTALL MEMCACHED ON XAMPP ON WINDOWS 7