geometria
@geometria

Как преобразовать неудобный json?

есть две модели:

Article: id, title
Comment: id, article_id, comment

использую конструктор запросов Laravel:

$articles = Article::
                    join('comments', 'articles.id', '=', 'comments.article_id');

        return $articles;


данный запрос выводит:
[
         {
            "id":1,
            "title":"title_1_article",
            "article_id":1,
            "comment": "first_comment"
         },
         {
            "id":2,
            "title":"title_1_article",
            "article_id":1,
            "comment": "second_comment"
         }
]

т.е. повторяет заголовок статьи столько раз,
сколько всего комментариев к статье

возможно ли, не используя Eloquent, привести json к такому виду, чтобы одна статья (article) включала всё комментарии (comment), без повторов article?
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
Раз вы используете модели, воспользуйтесь отношением Один ко многим

в модель Article нужно добавить

public function comments()
	{
		return $this->hasMany(Comment::class, 'article_id');
	}


результат будет +- таким
[
	{
		"id": 1,
		"title": "title_1_article",
		"comments": [
			{
				"id": 1,
				"article_id": 1,
				"comment": "first_comment"
			},
			{
				"id": 2,
				"article_id": 1,
				"comment": "second_comment"
			}
		]
	}
]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
pLavrenov
@pLavrenov
Разработка сайтов
Resources

Есть из коробки. Вместо join тут необходимо использовать отношения. Будет очень быстрее.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект