1

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

4

1 回答 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 回答