Сериализатор 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
, Таким образом, вы будете запрашивать все данные, необходимые для сериализации одновременно.