@yellow_pus

Как правильно свести посты к категориям, через отношение?

У меня есть контроллер, который возвращает такие данные в апи:
,{"id":6,"category_name":"333","posts":[{"title":"111","description":"222"}]},{"id":7,"category_name":"333","posts":[{"title":"123123","description":"32131"}]}

То есть, два разных массива, для одной и той же категории 333, это пост с title 111 и пост с title 123123. Каким образом или может даже условием, я смогу "засунуть" эти две статьи в одну и ту же категорию.
Или все же это делать как то на фронте? У меня там vuejs, в котором я вывожу эти данные таким циклом
<div v-for="post in posts.data">
        Категория: {{ post.category_name }} <br>
        Посты:
        <div v-for="p in post.posts">
            {{ p.title }}
        </div>
        <br>
        -----------------------
    </div>
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
computed: {
  categories() {
    return this.posts.data.reduce((acc, n) => (
      (acc[n.category_name] ??= {
        name: n.category_name,
        posts: [],
      }).posts.push(...n.posts),
      acc
    ), {});
  },
  ...

<div v-for="category in categories">
  <h3>{{ category.name }}</h3>
  <div v-for="post in category.posts">
    {{ post.title }}
  </div>
</div>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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