ビューではなくコントローラーからモデルを呼び出すことになっていることはわかっていますが、これを実行する必要がある状況にあります
ここにあります :
ブログスクリプトがあり、各ユーザーのホームページに、投稿ごとに10件の投稿と5件のコメントを表示したいと思います。
だから私のコントローラーは次のようになります
function get_posts($user_id){
$blog_model = $this->load->model('bloging');
$posts = $blog_model->get_user_posts();
$this->load->view('blog' , $posts )
}
各投稿には多くのコメントが含まれている可能性があるため、私もコメントを取得する必要があります
だから私の見解では私は持っています
foreach($posts->result() as $p ){
echo $p->comment;
/// getting comments
$comment_model = $this->load->model('comments');
$co = $comment_model->get_post_comments($p->id);
foreach($co as $co )
echo $co->comment;
//////
}
これを行うには、ヘルパーまたはライブラリを使用するか、モデルで静的メソッドを使用する必要があるため、これはこのようには機能しません(codeigniterを使用していますが、他のフレームワークでは異なる場合があります)
しかし、私にはどのような選択肢がありますか?
これはコントローラーで実行できます。投稿を取得した後、foreachループを使用して各投稿のコメントを取得し、すべてのコメントを2d配列に配置します($c_array[post_id][it's comments array]
)
それらを投稿付きのビューに送信し、各投稿のビューでコメントの配列を調べて......。
しかし、それは複雑で冗長で遅い継ぎ目です
投稿クエリにはすでに4つの結合があり、コメントクエリには2つの結合があります。これらの2つに結合すると、7になります。
また、2つのクエリでの選択には異なる制限があります。私はmvcにかなり慣れていません。このような状況での正しいアプローチは何ですか?