0

コードを最適化しようとしていますが、何を使用するか、どちらがベスト プラクティスであるかを判断できません。

アクションによってレンダリングされるview1.phpというビューがあります。ビュー 1には、そのアクションによってビューに渡されたモデル$model含まれています。$modelを再度使用して、以下のような別のアクションで使用しています。

view1.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 に答える