Задать вопрос
@EvgeniiR
https://github.com/EvgeniiR

Как правильнее собрать вид с данными из нескольких моделей?

Есть небольшой сайт-блог на Laravel. Модели Post и Comment, и соотв. PostsController и CommentController
Главную страницу показываю через метод index
$posts = Post::all();
        return view('blog.index', compact('posts'));

Странице с конкретным постом через метод show
return $post ? view('blog.show_post', compact('post')) : abort(404);

В PostController. Нужно на странице конкретного поста выводить и комментарии к нему.
Можно ли, и насколько будет правильно в PostsController методе show обращаться ещё и к модели комментариев? Это правильное использование контроллера, не нарушает принципы MVC?
Немножко в замешательстве.
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 3
sabramovskikh
@sabramovskikh
По мне дак контролер и модель могут быть вообще никак не связанны. Из одного контролера можно вызывать множество моделей и это нормально.
Ответ написан
Комментировать
@Yan-s
Можно. Нет, не нарушите.
Ответ написан
Комментировать
seoperin
@seoperin
Full stack web developer. Laravel / Vue
Это что за дичь?
return $post ? view('blog.show_post', compact('post')) : abort(404);


Вот так сделай:
$post = Post::findOrFail($id);
Если такого поста нет то он автоматом выдаст 404, если есть то всё норм.

По сути вопроса. Просто получать пост с комментами сразу.
$post = Post::with('comments')->findOrFail($id);
И на странице во вьюхе выводить комменты
{{ $post->comments }}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы