クリーンなMVCでは、データベースからデータを収集し、レンダリングするビューに渡します。MVC - ビュー内のデータソースコンテナ
ビューロジックがいくつかの要素を描画しないことを選択したとしても。
すべてのデータベースクエリを持つコンテナを準備するのはきれいですが、ビューがこのコンテナを反復処理し始めたときに、コンテナ内のデータを取得するのはイテラブルですコントローラ内のデータを取得していますか?
補遺
は私がビューにオーバー渡しているコンテナはのはExpensiveObjectProvider
それを呼びましょう、「の種類」モデルです。このコンテナがビューに渡されたときに、データはまだデータベースからフェッチされていません。
コンテナによってカプセル化されたオブジェクトは高価になる可能性があります。私がコントローラでそれをやっているのが唯一の理由は、エラー処理(データベースクエリのエラーの場合、接続の問題など)です。コントローラ内のデータベースから最初の1-2-3オブジェクトをプリフェッチし、ビューにコンテナを渡し(例外が発生していない場合)、ビューがプリフェッチされたデータを消費するようにすることは良いトレードオフと考えますか?コンテナが反復されるときに新しい項目を取得しますか?
はい、ビューに渡すコンテナはモデルの一種です。このコンテナがビューに渡されたときに、データはまだデータベースからフェッチされていません。 – Flavius
さて、私は今理解しています。データベースコードがモデル内にカプセル化されている場合は、ビューで必要なときにクリーンアップされます。 –
コンテナによってカプセル化されたオブジェクトは高価になる可能性があります。私がコントローラでそれをやっているのが唯一の理由は、エラー処理(データベースクエリのエラーの場合、接続の問題など)です。コントローラ内のデータベースから最初の1-2-3オブジェクトをプリフェッチし、ビューにコンテナを渡し(例外が発生していない場合)、ビューがプリフェッチされたデータを消費するようにすることは良いトレードオフと考えますか?コンテナが反復されるときに新しい項目を取得しますか? – Flavius