我想在 yii 中缓存数据库内容并在 Yii 下拉列表中使用该数据。在下拉列表中要从数据库中加载国家名称。(有 2 个表用户和国家)。在用户表单中需要下拉列表。使用缓存从国家表中选择的。查询放置在哪里以及何时可以在用户表单中使用缓存结果?
问问题
618 次
1 回答
1
为了缓存表中的结果,然后在下拉列表中使用它,您需要首先在配置文件中设置缓存,如权威指南的缓存概述中所述。如果你想使用 memCache,你可以这样设置;
array(
......
'components'=>array(
......
'cache'=>array(
'class'=>'system.caching.CMemCache',
),
),
);
Yii 可以使用许多不同的缓存,这些缓存在上面的缓存概述链接中列出。
然后你需要使用 Yii 的数据缓存功能。例如,您可以在您的 user/_form.php 视图中执行此操作;
...
echo $form->dropDownList($model,'country_id',CHtml::listData(Country::model()->cache(1000)->findAll(),'id','name'));
...
但是更多的 MVC 方法是在您的控制器中执行此操作,类似这样的方法会起作用;
在您的用户控制器中:
...
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 秒)到期。
要阅读有关使用缓存依赖项的更多信息,您可以阅读数据缓存文档的缓存依赖项部分。
[编辑]
如果您需要安装 memcached,并且在 Windows 上使用 xampp,这是一个很好的指南来让它工作:如何在 WINDOWS 7 上的 XAMPP 上安装 MEMCACHED
于 2012-11-13T16:41:53.797 回答