Как в Laravel вывести на одной страницы несколько превью (в разных блоках) статей из разных категорий?

Добрый вечер!
Попытаюсь немного пояснить:
Пересмотрел некоторое количество видео и статей на тему создания блога на Larevel (5) и везде, как правило, показывают как выводить выводить статью на главную страницу и делать ссылку на переход к полной версии страницы, однако мне необходимо на главной странице разместить превью нескольких страниц скажем в двух блоках (допустим 5 превью в каждом из двух блоков, в каждом блоке - своя категория), т.е. в БД есть таблица article (в которой будут все статьи), модель Article и контроллер ArticlesController. С самими категориями еще не разобрался, но могу фильтровать вывод в блоке страниц (при помощи поля category_id в таблице), а вот как выводить в разные блоки (блоки находятся в одной вьюшке) статьи из разных категорий - непонятно (и блоков в итоге будет примерно 10 штук, т.е. категорий). Буду благодарен, если кто-то подскажет в каком направлении двигаться, может какой-то пример кода скинет по теме. Используемый шаблонизатор - blade.
  • Вопрос задан
  • 1162 просмотра
Решения вопроса 1
xpert13
@xpert13
Full Stack Developer
1. Связываем модели категорий и статей (документация)

class ArticleCategory extends Model
{
...
    public function articles()
    {
        return  $this->hasMany('App\Article', 'category_id');
    }
...


2. В контролере получаем список всех категорий вместе с их статьями:
$categories = \App\ArticleCategory::with('articles')->get();


3. Во вьюхе проходим по всем категориям и выводим в отдельных блоках посты каждой:
@foreach($categories as $categorie)
    <div class="category_block">
       <h3>{{ $categorie->name }}</h3>
       @foreach($categorie->articles as $article)
           <div class="article">
               {{ $article->name }}
           </div>
       @endforeach
    </div>
@endforeach
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы