Всем привет! Всё разбираюсь с паттерном MVC... Вопрос, впринципе, в заголовке темы, но напишу подробнее. Может я вообзе все не правильно делаю...
Есть у меня контроллер:
class PostsController{
private $list_posts; // полученный массив объектов пост
function getUserPosts(){
if(!isset($_GET['user_id'])) throw new Exception("Нет ID пользователя");
$PostsModel = new \PostsModel;
$this->list_posts = $PostsModel->getUserPosts(intval($_GET['user_id']));
/*
в свойство list_posts получили массив объектов ПОСТ вида:
array(
3575 => array("post_id" => 3575, "title" => "Test Post"),
5592 => array("post_id" => 5592, "title" => "Test Post 2"),
)
*/
}
}
После получения массива объектов
пост, перед отправкой данных в
$PostsView->render('template', $this->list_posts)
, нужно добавить к каждому объекту последние 2 комментария так, чтобы результат получился таким (покажу на примере одного объекта, чтобы код был короче):
array(
3575 => array(
"post_id" => 3575,
"title" => "Test Post",
"comments" => array(
array("author", "text", "date"),
array("author", "text", "date")
)
)
)
Для этого, в методе
PostsController->getUserPosts()
нужно собрать все ID объектов в массиве и сделать запрос к совершенно "левой" модели
CommentsModel->getCommentsFromPostIds()
;
И после получения результата - раскидать все комментарии по соотвествующим ID постам.
И вот и есть вопрос. Получается, что контроллер PostsController обращается к модели CommentsModel. Правильно ли это? Хотя я подозреваю что не очень.