2012-05-25 59 views
0

我知道我們想從控制器不認爲呼叫模型,但我在,我要在這裏做這個替代調用從視圖模型在這種情況下

的情況是:

我有一個bloging腳本,並在每個用戶主頁我想顯示10個職位和5點意見每篇文章

所以我的控制器看起來像

function get_posts($user_id){ 

    $blog_model = $this->load->model('bloging'); 
    $posts  = $blog_model->get_user_posts(); 
    $this->load->view('blog' , $posts) 
} 

每個POS牛逼可以有很多評論 所以我必須讓他們太

所以,在我看來,我有

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循環,讓每個崗位的意見,把所有的意見在二維陣列($c_array[post_id][it's comments array]

它們發送到視圖與職位,在視圖每個崗位的外觀到陣列中它的意見,並.......

但接縫複雜,冗餘和慢

我已經有4加入對後查詢和2連接上的評論查詢它將7如果我加入這兩個

並且在兩個查詢中有不同的限制 我對mvc相當陌生。在這種情況下,正確的做法是什麼?

回答

1

通常情況下,您將在post模型上有一個方法來獲取該帖子的評論。此外,我通常會有一種方法來確保評論已加入到帖子中,因此您不會爲每篇文章發出評論查詢。

+0

是的,但我已經有4個連接上後查詢2加入評論查詢它將是7個連接,如果我這兩個。選擇評論和帖子也有不同的限制(對不起,我應該提到這一點) – max

1

我想你已經爲此創建了自己的MVC系統,所以我不知道你將如何實現這一點。我使用Zend Framework,所以我可以告訴你如何使用它。

從視圖訪問模型並沒有什麼本質上的錯誤,只要它是隻讀訪問權限,但是儘可能在視圖腳本中保留儘可能多的代碼是很好的。爲此,在您的情況下,我會使用一個view helperwriting your own view helper在ZF中非常簡單。如果你想使用這種方法,我會讓它適應你的MVC。

這意味着你可以抽象的代碼,你需要得到的評論列表出來的視圖腳本和喜歡的東西取代它: -

echo $this->getComments($messageID);