0

我正在尝试优化我的代码,但我无法决定使用什么,以及哪个是最佳实践。

我有一个视图说view1.php,它是由一个动作呈现的。现在view1包含一个模型$model,它通过其操作传递给视图;现在我再次使用$model在另一个不同的操作中使用它,如下所示:

视图1.php:

$studyDetails = $this->actionStudyDetails($model);

在 StudyDetails 操作中,我将使用 $model,

StudyController.php:

public function actionStudyDetails($model){

//do some processing of the model here and return an object

}

我的问题是,假设模型非常大,传递已经加载的整个对象是否是个好主意?在优化方面,或者可能是最佳实践?

还是我应该只传递 id 或主键说 $model->id?然后加载模型;让我的行动是这样的:

StudyController.php:

public function actionStudyDetails($id){
    $model = $this->loadModel($id);
//do some processing of the model here and return an object

}

我应该将整个对象传递给动作,还是最好在动作中重新加载模型?谢谢,我希望我解释得很好

4

1 回答 1

2

我更喜欢将单行加载到数据库中。这是一个优化,在它成为问题之前我不会担心。

您可以将模型存储在控制器中以防止多次运行相同的查询:

// Store model to not repeat query.
private $model;

protected function loadModel( $id = null )
{
    if($this->model===null)
    {
        if($id!==null)
            $this->model=SomeModel::model()->findByPk($id);
    }
    return $this->model;
}

这是我在这里学到的一个技巧。

于 2013-08-16T06:58:13.460 回答