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?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 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
@lavren
Resources

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

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

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