一般来说,好的做法是仅从控制器调用模型,然后将其传递给视图。这是一个例子:
public function actionView($id)
{
$this->render('view', array(
'model' => $this->loadModel((int)$id),
));
}
然后你可以model
在视图中使用来显示信息。
问题是我想在我的视图中实现片段缓存:
<?php if($this->beginCache($id, array('duration'=>3600))) { ?>
...content to be cached...
<?php $this->endCache(); } ?>
但是由于模型已经从控制器加载,sql 查询无论如何都会被执行。我怎样才能防止这种情况发生?
我现在找到的唯一选择是从视图(在缓存部分)加载模型或执行数据缓存,但我更喜欢使用片段缓存!