Сериализатор FOSRestBundle приводит к слишком большому количеству запросов

Я использую FOSrestbundle в своем API, чтобы получить мои объекты в виде JSON. Итак, мой контроллер выглядит так:

public function getArticleAction($id)
    {
        $article = $this->getDoctrine()
            ->getRepository('ApiBundle:Article')
            ->find($id);
        return $this->handleView($this->view($article));
    }

И моя проблема в том, что статья содержит комментарии, добавленные пользователями, поэтому мой json выглядит так:

{
    "title": "My Article",
    "comments": [
        {
            "content": "my first comment",
            "added_by": {
                "username": "John"
            }
        },
        {
            "content": "my second comment",
            "added_by": {
                "username": "Smith"
            }
        }
    ]
}

и когда я его отображаю, запросов слишком много, для каждого комментария есть запрос для получения информации о пользователе.

Нужно ли получать объект моей статьи с помощью построителя запросов и большого количества соединений (потому что это всего лишь пример, но у меня гораздо больше отношений), чтобы получить всю информацию в одном запросе, или есть другой прием, чтобы избежать этого?

1 ответ

Вы должны использовать EAGER для загрузки added_by отношение при запросе ваших данных с помощью Doctrine, Таким образом, вы будете запрашивать все данные, необходимые для сериализации одновременно.

Другие вопросы по тегам